Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
88
Task/Arithmetic-Complex/VBA/arithmetic-complex.vba
Normal file
88
Task/Arithmetic-Complex/VBA/arithmetic-complex.vba
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
Public Type Complex
|
||||
re As Double
|
||||
im As Double
|
||||
End Type
|
||||
|
||||
Function CAdd(a As Complex, b As Complex) As Complex
|
||||
CAdd.re = a.re + b.re
|
||||
CAdd.im = a.im + b.im
|
||||
End Function
|
||||
|
||||
Function CSub(a As Complex, b As Complex) As Complex
|
||||
CSub.re = a.re - b.re
|
||||
CSub.im = a.im - b.im
|
||||
End Function
|
||||
|
||||
Function CMult(a As Complex, b As Complex) As Complex
|
||||
CMult.re = (a.re * b.re) - (a.im * b.im)
|
||||
CMult.im = (a.re * b.im) + (a.im * b.re)
|
||||
End Function
|
||||
|
||||
Function CConj(a As Complex) As Complex
|
||||
CConj.re = a.re
|
||||
CConj.im = -a.im
|
||||
End Function
|
||||
|
||||
Function CNeg(a As Complex) As Complex
|
||||
CNeg.re = -a.re
|
||||
CNeg.im = -a.im
|
||||
End Function
|
||||
|
||||
Function CInv(a As Complex) As Complex
|
||||
CInv.re = a.re / (a.re * a.re + a.im * a.im)
|
||||
CInv.im = -a.im / (a.re * a.re + a.im * a.im)
|
||||
End Function
|
||||
|
||||
Function CDiv(a As Complex, b As Complex) As Complex
|
||||
CDiv = CMult(a, CInv(b))
|
||||
End Function
|
||||
|
||||
Function CAbs(a As Complex) As Double
|
||||
CAbs = Math.Sqr(a.re * a.re + a.im * a.im)
|
||||
End Function
|
||||
|
||||
Function CSqr(a As Complex) As Complex
|
||||
CSqr.re = Math.Sqr((a.re + Math.Sqr(a.re * a.re + a.im * a.im)) / 2)
|
||||
CSqr.im = Math.Sgn(a.im) * Math.Sqr((-a.re + Math.Sqr(a.re * a.re + a.im * a.im)) / 2)
|
||||
End Function
|
||||
|
||||
Function CPrint(a As Complex) As String
|
||||
If a.im > 0 Then
|
||||
Sep = "+"
|
||||
Else
|
||||
Sep = ""
|
||||
End If
|
||||
CPrint = a.re & Sep & a.im & "i"
|
||||
End Function
|
||||
|
||||
Sub ShowComplexCalc()
|
||||
Dim a As Complex
|
||||
Dim b As Complex
|
||||
Dim c As Complex
|
||||
|
||||
a.re = 1.5
|
||||
a.im = 3
|
||||
b.re = 1.5
|
||||
b.im = 1.5
|
||||
|
||||
Debug.Print "a = " & CPrint(a)
|
||||
Debug.Print "b = " & CPrint(b)
|
||||
|
||||
c = CAdd(a, b)
|
||||
Debug.Print "a + b = " & CPrint(c)
|
||||
c = CSub(a, b)
|
||||
Debug.Print "a - b = " & CPrint(c)
|
||||
c = CMult(a, b)
|
||||
Debug.Print "a * b = " & CPrint(c)
|
||||
c = CConj(a)
|
||||
Debug.Print "Conj(a) = " & CPrint(c)
|
||||
c = CNeg(a)
|
||||
Debug.Print "-a = " & CPrint(c)
|
||||
c = CInv(a)
|
||||
Debug.Print "Inv(a) = " & CPrint(c)
|
||||
c = CDiv(a, b)
|
||||
Debug.Print "a / b = " & CPrint(c)
|
||||
Debug.Print "Abs(a) = " & CAbs(a)
|
||||
c = CSqr(a)
|
||||
Debug.Print "Sqrt(a) = " & CPrint(c)
|
||||
End Sub
|
||||
Loading…
Add table
Add a link
Reference in a new issue