For complex numbers the 4 main operators +, -, *, / are usually set up to begin with.
Then the method operators +=, -=, *=, /= are not needed.
Code: Select all
type complex
as double re,im
end type
Operator +(n1 As complex,n2 As complex) As complex
Return Type<complex>(n1.re+n2.re,n1.im+n2.im)'n
End Operator
Operator -(n1 As complex,n2 As complex) As complex
Return Type<complex>(n1.re-n2.re,n1.im-n2.im)
End Operator
Operator *(n1 As complex,n2 As complex) As complex
Return Type<complex>(n1.re*n2.re - n1.im*n2.im,n1.im*n2.re + n1.re*n2.im)'n
End Operator
Operator /(n1 As complex,n2 As complex) As complex
Dim As Double d = n2.re*n2.re+n2.im*n2.im
Return Type<complex>((n1.re*n2.re+n1.im*n2.im)/d,(n1.im*n2.re - n1.re*n2.im)/d)
End Operator
dim as complex z1=type(1,-1),z2=type(5,6)
dim as complex t=z1
print t.re,t.im
t+=z2
print t.re,t.im
t=z1
t-=z2
print t.re,t.im
t=z1
t*=z2
print t.re,t.im
t=z1
t/=z2
print t.re,t.im
t*=z2
print t.re,t.im
sleep