DevX Home Today's Headlines   Articles Archive   Tip Bank   Forums

1. Registered User
Join Date
Jul 2005
Posts
23

## Complex number

Hi,

Do JAVA provide any class for complex number operation?

If it does, what it is?

2. Registered User
Join Date
Jul 2005
Location
the Netherlands
Posts
128
No Java doesn't.
"Java does not have a standard class for complex numbers" [see: http://documents.wolfram.com/v5/Add-...k1.2.14.3.html]

You could try this code:

Code:
```/**
* @author Ian F. Darwin, inspired by David Flanagan.
* @version \$Id: Complex.java,v 1.3 2004/05/13 22:28:59 ian Exp \$
*/
public class Complex {
/** The real part */
private double r;
/** The imaginary part */
private double i;

/** Construct a Complex */
Complex(double rr, double ii) {
r = rr;
i = ii;
}

/** Display the current Complex as a String, for use in
* println() and elsewhere.
*/
public String toString() {
StringBuffer sb = new StringBuffer().append(r);
if (i>0)
sb.append('+');  // else append(i) appends - sign
return sb.append(i).append('i').toString();
}

/** Return just the Real part */
public double getReal() {
return r;
}
/** Return just the Real part */
public double getImaginary() {
return i;
}
/** Return the magnitude of a complex number */
public double magnitude() {
return Math.sqrt(r*r + i*i);
}

/** Add another Complex to this one
*/
}

*/
public static Complex add(Complex c1, Complex c2) {
return new Complex(c1.r+c2.r, c1.i+c2.i);
}

/** Subtract another Complex from this one
*/
public Complex subtract(Complex other) {
return subtract(this, other);
}

/** Subtract two Complexes
*/
public static Complex subtract(Complex c1, Complex c2) {
return new Complex(c1.r-c2.r, c1.i-c2.i);
}

/** Multiply this Complex times another one
*/
public Complex multiply(Complex other) {
return multiply(this, other);
}

/** Multiply two Complexes
*/
public static Complex multiply(Complex c1, Complex c2) {
return new Complex(c1.r*c2.r - c1.i*c2.i, c1.r*c2.i + c1.i*c2.r);
}

/** Divide c1 by c2.
* @author Gisbert Selke.
*/
public static Complex divide(Complex c1, Complex c2) {
return new Complex(
(c1.r*c2.r+c1.i*c2.i)/(c2.r*c2.r+c2.i*c2.i),
(c1.i*c2.r-c1.r*c2.i)/(c2.r*c2.r+c2.i*c2.i));
}
/* Compare this Complex number with another
*/
public boolean equals(Object o) {
if (!(o instanceof Complex))
throw new IllegalArgumentException(
"Complex.equals argument must be a Complex");
Complex other = (Complex)o;
return r == other.r && i == other.i;
}
/* Generate a hashCode; not sure how well distributed these are.
*/
public int hashCode() {
return (int)( r) |  (int)i;
}

public static void main(String[] args) {
Complex c = new Complex(3,  5);
Complex d = new Complex(2, -2);
System.out.println(c);
System.out.println(c + ".getReal() = " + c.getReal());
System.out.println(c + " + " + d + " = " + c.add(d));
System.out.println(c + " + " + d + " = " + Complex.add(c, d));
System.out.println(c + " * " + d + " = " + c.multiply(d));
System.out.println(Complex.divide(c, d));
}
}```

3. Registered User
Join Date
Jul 2005
Posts
23
Thank you very much prometheuzz. You have really helped me.

4. Registered User
Join Date
Jul 2005
Location
the Netherlands
Posts
128
Originally Posted by burung
Thank you very much prometheuzz. You have really helped me.
No prob, note that I am not the author of the code, it's F. Darwin, author of many Java books.

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•

 FAQ Latest Articles Java .NET XML Database Enterprise