Complex number


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 4 of 4

Thread: Complex number

  1. #1
    Join Date
    Jul 2005
    Posts
    23

    Question Complex number

    Hi,

    Do JAVA provide any class for complex number operation?

    If it does, what it is?

  2. #2
    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 Complex add(Complex other) {
        return add(this, other);
      }
    
      /** Add two Complexes
       */
      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. #3
    Join Date
    Jul 2005
    Posts
    23
    Thank you very much prometheuzz. You have really helped me.

  4. #4
    Join Date
    Jul 2005
    Location
    the Netherlands
    Posts
    128
    Quote 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.

Similar Threads

  1. Learning Help
    By Carlos in forum Java
    Replies: 3
    Last Post: 07-31-2005, 05:17 PM
  2. Help
    By George in forum oracle.general
    Replies: 0
    Last Post: 04-01-2003, 12:00 AM
  3. Help
    By George in forum oracle.general
    Replies: 0
    Last Post: 03-31-2003, 11:57 PM
  4. Help
    By George in forum oracle.general
    Replies: 0
    Last Post: 03-31-2003, 11:56 PM
  5. Replies: 255
    Last Post: 02-13-2002, 07:32 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center