Arithmetic/Complex: Difference between revisions

(Added Delphi example)
Line 4,880:
3.785e+00-1.969e+00j,
8.066e-02+2.793e-01j></pre>
 
 
=={{header|VBA}}==
<lang VBA>
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
</lang>
{{out}}
<pre>
a = 1.5+3i
b = 1.5+1.5i
a + b = 3+4.5i
a - b = 0+1.5i
a * b = -2.25+6.75i
Conj(a) = 1.5-3i
-a = -1.5-3i
Inv(a) = 0.133333333333333-0.266666666666667i
a / b = 1.5+0.5i
Abs(a) = 3.35410196624968
Sqrt(a) = 1.55789954205168+0.962834868045836i
</pre>
 
=={{header|Wortel}}==
18

edits