Hello how can i do this in Java Design a class ComplexNo tha
Hello how can i do this in Java?
Design a class ComplexNo that allows you to add, subtract, multiply anddivide two complex numbers. Recall that a complex number is: a + bi, wherea, b are real numbers and i =-1. Note: to divide 2 complex numbers: (a + bi /c + di), multiply the fraction by 1 in the form of (c – di / c – di). The numbersc – di and c + di are called conjugates because their product is always c2 + d2,with no imaginary part.Provide (in addition to add, subtract, multiply, and divide) methods forequals (which returns boolean), and toString( ) (that returns a stringrepresenting the receiving object). Throw an exception if an attempt is madeto divide by 0 (0 + 0i). Your implementation should return the results of eachoperation WITHOUT changing the operands.
Solution
public class Complex {
     private double real;   // the real part
     private double imag;   // the imag part
    //creates a complex object with real and imaginary parts.
     public Complex(double real, double imag) {
         this.real = real;
         this.imag = imag;
     }
    // returns a string object.
     public String toString() {
         if (imag == 0) return real + \"\";
         if (real == 0) return imag + \"i\";
         if (imag < 0) return real + \" - \" + (-imag) + \"i\";
         return real + \" + \" + imag + \"i\";
     }
    // adds a given given complex object.
     public Complex add(Complex b) {
         Complex a = this;             // invoking object
         double real = a.real + b.real;
         double imag = a.imag + b.imag;
         return new Complex(real, imag);
     }
    // substracts a given complex object.
     public Complex substract(Complex b) {
         Complex a = this;
         double real = a.real - b.real;
         double imag = a.imag - b.imag;
         return new Complex(real, imag);
     }
    // multiplies with a given complex object.
     public Complex multiply(Complex b) {
         Complex a = this;
         double real = a.real * b.real - a.imag * b.imag;
         double imag = a.real * b.imag + a.imag * b.real;
         return new Complex(real, imag);
     }
    // return a new Complex object whose value is the reciprocal of this
     public Complex reciprocal() {
         double scale = real*real + imag*imag;
         return new Complex(real / scale, -imag / scale);
     }
    // return a / b
     public Complex divide(Complex b) {
         Complex a = this;
         return a.multiply(b.reciprocal());
     }
    // Equals method returns a boolean true if complex objects are equal, false if not equal.
     public boolean equals(Complex x) {
         return (this.real == x.real) && (this.imag == x.imag);
     }
    // Testing samples
     public static void main(String[] args) {
         Complex a = new Complex(3.0, 4.0);
         Complex b = new Complex(-1.0, 2.0);
        System.out.println(\"Equals:\"+a.equals(new Complex(3.0,4.0)));
         System.out.println(\"a            : \" + a);
         System.out.println(\"b            : \" + b);
         System.out.println(\"b + a        : \" + b.add(a));
         System.out.println(\"a - b        : \" + a.substract(b));
         System.out.println(\"a * b        : \" + a.multiply(b));
         System.out.println(\"a / b        : \" + a.divide(b));
     }
}
/* sample output
Equals:true
 a            : 3.0 + 4.0i
 b            : -1.0 + 2.0i
 b + a        : 2.0 + 6.0i
 a - b        : 4.0 + 2.0i
 a * b        : -11.0 + 2.0i
 a / b        : 1.0 - 2.0i
*/


