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