function Complex(real, imaginary) { this.real = 0; this.imaginary = 0; this.real = (typeof real === 'undefined') ? this.real : parseFloat(real); this.imaginary = (typeof imaginary === 'undefined') ? this.imaginary : parseFloat(imaginary); } Complex.transform = function(num) { var complex; complex = (num instanceof Complex) ? num : complex; complex = (typeof num === 'number') ? new Complex(num, 0) : num; return complex; }; function display_complex(re, im) { if(im === '0') return '' + re; if(re === 0) return '' + im + 'i'; if(im < 0) return '' + re + im + 'i'; return '' + re + '+' + im + 'i'; } function complex_num_add(first, second) { var num1, num2; num1 = Complex.transform(first); num2 = Complex.transform(second); var real = num1.real + num2.real; var imaginary = num1.imaginary + num2.imaginary; return display_complex(real, imaginary); } var a = new Complex(2, -7); var b = new Complex(4, 3); console.log(complex_num_add(a,b));