Problem
(a) Design a Complex abstract type, whose values are complex numbers. Equip your abstract type with operations such as magnitude, complex addition, complex subtraction, and complex multiplication.
(b) Suggest an efficient representation for your abstract type.