28 lines
645 B
Plaintext
28 lines
645 B
Plaintext
type complex = (f64,f64)
|
|
|
|
fun complexAdd((a,b): complex) ((c,d): complex): complex =
|
|
(a + c,
|
|
b + d)
|
|
|
|
fun complexMult((a,b): complex) ((c,d): complex): complex =
|
|
(a*c - b * d,
|
|
a*d + b * c)
|
|
|
|
fun complexInv((r,i): complex): complex =
|
|
let denom = r*r + i * i
|
|
in (r / denom,
|
|
-i / denom)
|
|
|
|
fun complexNeg((r,i): complex): complex =
|
|
(-r, -i)
|
|
|
|
fun complexConj((r,i): complex): complex =
|
|
(r, -i)
|
|
|
|
fun main (o: int) (a: complex) (b: complex): complex =
|
|
if o == 0 then complexAdd a b
|
|
else if o == 1 then complexMult a b
|
|
else if o == 2 then complexInv a
|
|
else if o == 3 then complexNeg a
|
|
else complexConj a
|