⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcomplex.bas

📁 酒店管理VB源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
    Call SinCos(tmph2y, s, c)
    
    C_Power.Real = tmpf * c
    C_Power.Imag = tmpf * s

End Function

'开方
Public Function C_Sqrt(Z1 As TComplex) As TComplex
    Dim tmp1 As Double
    Dim tmp2 As Double
    Dim c As Double, s As Double
    tmp1 = Sqr(Sqr((Z1.Real * Z1.Real) + (Z1.Imag * Z1.Imag)))
    tmp2 = 0.5 * ArcTan2(Z1.Imag, Z1.Real)
    Call SinCos(tmp2, s, c)
    C_Sqrt.Real = tmp1 * c
    C_Sqrt.Imag = tmp1 * s
End Function

Public Function C_Exp(Z1 As TComplex) As TComplex
    Dim tmp As Double
    Dim c As Double, s As Double
    tmp = Exp(Z1.Real)
    Call SinCos(Z1.Imag, s, c)
    C_Exp.Real = tmp * c
    C_Exp.Imag = tmp * s

End Function


Public Function C_Ln(Z1 As TComplex) As TComplex
    C_Ln.Real = 0.5 * Log((Z1.Real * Z1.Real) + (Z1.Imag * Z1.Imag))
    C_Ln.Imag = ArcTan2(Z1.Imag, Z1.Real)
End Function



Public Function C_Log2(Z1 As TComplex) As TComplex
    Const Ln2P = 1.44269504088896                 '  {1/Ln(2)}
    C_Log2.Real = 0.5 * Ln2P * Log((Z1.Real * Z1.Real) + (Z1.Imag * Z1.Imag))
    C_Log2.Imag = ArcTan2(Z1.Imag, Z1.Real)
End Function

Public Function C_Log10(Z1 As TComplex) As TComplex
    Const Ln10P = 0.434294481903252                  '   {1/Ln(10)}
    C_Log10.Real = 0.5 * Ln10P * Log((Z1.Real * Z1.Real) + (Z1.Imag * Z1.Imag))
    C_Log10.Imag = ArcTan2(Z1.Imag, Z1.Real)
End Function

Public Function C_Sin(Z1 As TComplex) As TComplex
    Dim c As Double, s As Double
    Dim ch As Double, sh As Double

    Call SinCos(Z1.Real, s, c)
    Call SinHCosH(Z1.Imag, sh, ch)
    C_Sin.Real = s * ch
    C_Sin.Imag = c * sh
End Function

Public Function C_Cos(Z1 As TComplex) As TComplex
    Dim c As Double, s As Double
    Dim ch As Double, sh As Double

    Call SinCos(Z1.Real, s, c)
    Call SinHCosH(Z1.Imag, sh, ch)
    C_Cos.Real = c * ch
    C_Cos.Imag = -s * sh
End Function

Public Function C_Tan(Z1 As TComplex) As TComplex

    Dim tmp As Double
    Dim c As Double, s As Double
    Dim ch As Double, sh As Double

    Call SinCos(Z1.Real * 2, s, c)
    Call SinHCosH(Z1.Imag * 2, sh, ch)
    tmp = 1 / (c + ch)
    C_Tan.Real = s * tmp
    C_Tan.Imag = sh * tmp

End Function

Public Function C_Cot(Z1 As TComplex) As TComplex
    C_Cot = C_Rev(C_Tan(Z1))
End Function

Public Function C_Csc(Z1 As TComplex) As TComplex
    C_Csc = C_Rev(C_Sin(Z1))
End Function

Public Function C_Sec(Z1 As TComplex) As TComplex
    C_Sec = C_Rev(C_Cos(Z1))
End Function

Public Function C_SinH(Z1 As TComplex) As TComplex

    Dim c As Double, s As Double
    Dim ch As Double, sh As Double

    Call SinCos(Z1.Imag, s, c)
    Call SinHCosH(Z1.Real, sh, ch)
    C_SinH.Real = sh * c
    C_SinH.Imag = ch * s
End Function

Public Function C_CosH(Z1 As TComplex) As TComplex

    Dim c As Double, s As Double
    Dim ch As Double, sh As Double

    Call SinCos(Z1.Imag, s, c)
    Call SinHCosH(Z1.Real, sh, ch)
    C_CosH.Real = ch * c
    C_CosH.Imag = sh * s
End Function

Public Function C_TanH(Z1 As TComplex) As TComplex
    Dim tmp As Double
    Dim c As Double, s As Double
    Dim ch As Double, sh As Double

    Call SinCos(2 * Z1.Imag, s, c)
    Call SinHCosH(2 * Z1.Real, sh, ch)
    tmp = 1 / (ch + c)
    C_TanH.Real = sh * tmp
    C_TanH.Imag = s * tmp
End Function


Public Function C_CotH(Z1 As TComplex) As TComplex
    C_CotH = C_Rev(C_TanH(Z1))
End Function

Public Function C_CscH(Z1 As TComplex) As TComplex
    C_CscH = C_Rev(C_SinH(Z1))
End Function

Public Function C_SecH(Z1 As TComplex) As TComplex
    C_SecH = C_Rev(C_CosH(Z1))
End Function


Public Function C_ArcSin(Z1 As TComplex) As TComplex
    Dim tmp1  As Double
    Dim tmp2  As Double
    Dim tmpR  As Double
    Dim tmpA  As Double
    Dim c As Double, s As Double
    
        tmp1 = ((Z1.Real * Z1.Real) - (Z1.Imag * Z1.Imag))
        tmpA = -2 * Z1.Real * Z1.Imag
        tmpR = 1 - tmp1

        tmp1 = Sqr(Sqr((tmpR * tmpR) + (tmpA * tmpA)))
        tmp2 = 0.5 * ArcTan2(tmpA, tmpR)
        Call SinCos(tmp2, s, c)
        tmpR = tmp1 * c - Z1.Imag
        tmpA = tmp1 * s + Z1.Real

        C_ArcSin.Imag = -0.5 * Log((tmpR * tmpR) + (tmpA * tmpA))
        C_ArcSin.Real = ArcTan2(tmpA, tmpR)

End Function

Public Function C_ArcCos(Z1 As TComplex) As TComplex
    Dim tmp1  As Double
    Dim tmp2  As Double
    Dim tmpR  As Double
    Dim tmpA  As Double
    Dim c As Double, s As Double

    
        tmp1 = ((Z1.Real * Z1.Real) - (Z1.Imag * Z1.Imag))
        tmpA = 2 * Z1.Real * Z1.Imag
        tmpR = tmp1 - 1

        tmp1 = Sqr(Sqr((tmpR * tmpR) + (tmpA * tmpA)))
        tmp2 = 0.5 * ArcTan2(tmpA, tmpR)
        Call SinCos(tmp2, s, c)
        tmpR = tmp1 * c + Z1.Real
        tmpA = tmp1 * s + Z1.Imag

        C_ArcCos.Imag = -0.5 * Log((tmpR * tmpR) + (tmpA * tmpA))
        C_ArcCos.Real = ArcTan2(tmpA, tmpR)

End Function

Public Function C_ArcTan(Z1 As TComplex) As TComplex
    Dim tmp1  As Double
    Dim tmp2  As Double
    Dim tmpR  As Double
    Dim tmpA  As Double
    Dim tmpTR As Double
    Dim tmpTA As Double
    Dim tmpf  As Double

    tmp1 = 1 + Z1.Imag
    tmp2 = -Z1.Real
    tmpR = 1 - Z1.Imag
    tmpA = Z1.Real

    tmpf = 1 / ((tmpR * tmpR) + (tmpA * tmpA))
    tmpTR = (tmp1 * tmpR + tmp2 * tmpA) * tmpf
    tmpTA = (tmp2 * tmpR - tmp1 * tmpA) * tmpf

    tmpR = 0.25 * Log((tmpTR * tmpTR) + (tmpTA * tmpTA))
    tmpA = 0.5 * ArcTan2(tmpTA, tmpTR)
    C_ArcTan.Real = -tmpA
    C_ArcTan.Imag = tmpR
End Function


Public Function C_ArcCsc(Z1 As TComplex) As TComplex
    C_ArcCsc = C_ArcSin(C_Rev(Z1))
End Function


Public Function C_ArcSec(Z1 As TComplex) As TComplex
    C_ArcSec = C_ArcCos(C_Rev(Z1))
End Function


Public Function C_ArcCot(Z1 As TComplex) As TComplex
    C_ArcCot = C_ArcTan(C_Rev(Z1))
End Function

Public Function C_ArcSinh(Z1 As TComplex) As TComplex
    Dim tmp1  As Double
    Dim tmp2  As Double
    Dim tmpR  As Double
    Dim tmpA  As Double
    Dim c As Double, s As Double

    tmp1 = (Z1.Real - Z1.Imag) * (Z1.Real + Z1.Imag)
    tmpA = 2 * Z1.Real * Z1.Imag
    tmpR = tmp1 + 1

    tmp1 = Sqr(Sqr((tmpR * tmpR) + (tmpA * tmpA)))
    tmp2 = 0.5 * ArcTan2(tmpA, tmpR)
    Call SinCos(tmp2, s, c)
    tmpR = tmp1 * c + Z1.Real
    tmpA = tmp1 * s + Z1.Imag

    C_ArcSinh.Real = 0.5 * Log((tmpR * tmpR) + (tmpA * tmpA))
    C_ArcSinh.Imag = ArcTan2(tmpA, tmpR)
End Function

Public Function C_ArcCosh(Z1 As TComplex) As TComplex
    Dim tmp1  As Double
    Dim tmp2  As Double
    Dim tmpR  As Double
    Dim tmpA  As Double
    Dim c As Double, s As Double

    tmp1 = (Z1.Real - Z1.Imag) * (Z1.Real + Z1.Imag)
    tmpA = 2 * Z1.Real * Z1.Imag
    tmpR = tmp1 - 1

    tmp1 = Sqr(Sqr((tmpR * tmpR) + (tmpA * tmpA)))
    tmp2 = 0.5 * ArcTan2(tmpA, tmpR)
    Call SinCos(tmp2, s, c)
    tmpR = tmp1 * c + Z1.Real
    tmpA = tmp1 * s + Z1.Imag

    C_ArcCosh.Real = 0.5 * Log((tmpR * tmpR) + (tmpA * tmpA))
    C_ArcCosh.Imag = ArcTan2(tmpA, tmpR)
End Function

Public Function C_ArcTanh(Z1 As TComplex) As TComplex
    Dim tmp1  As Double
    Dim tmp2  As Double
    Dim tmpR  As Double
    Dim tmpA  As Double
    Dim tmpTR As Double
    Dim tmpTA As Double
    Dim tmpf  As Double

    tmp1 = 1 + Z1.Real
    tmp2 = Z1.Imag
    tmpR = 1 - Z1.Real
    tmpA = -Z1.Imag

    tmpf = 1 / ((tmpR * tmpR) + (tmpA * tmpA))
    tmpTR = (tmp1 * tmpR + tmp2 * tmpA) * tmpf
    tmpTA = (tmp2 * tmpR - tmp1 * tmpA) * tmpf

    C_ArcTanh.Real = 0.25 * Log((tmpTR * tmpTR) + (tmpTA * tmpTA))
    C_ArcTanh.Imag = 0.5 * ArcTan2(tmpTA, tmpTR)
End Function

Public Function C_ArcCsch(Z1 As TComplex) As TComplex
    C_ArcCsch = C_ArcSinh(C_Rev(Z1))
End Function

Public Function C_ArcSech(Z1 As TComplex) As TComplex
    C_ArcSech = C_ArcCosh(C_Rev(Z1))
End Function

Public Function C_ArcCoth(Z1 As TComplex) As TComplex
    C_ArcCoth = C_ArcTanh(C_Rev(Z1))
End Function


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -