DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

+ Reply to Thread
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

Bookmarks

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


Top DevX Stories

Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL


Sponsored Links