A class to represent Complex Numbers : Data Type Number « Language Basics « Java

Java
1. 2D Graphics GUI
2. 3D
3. Advanced Graphics
4. Ant
5. Apache Common
6. Chart
7. Collections Data Structure
8. Database SQL JDBC
9. Design Pattern
10. Development Class
11. Email
12. Event
13. File Input Output
14. Game
15. Hibernate
16. J2EE
17. J2ME
18. JDK 6
19. JSP
20. JSTL
21. Language Basics
22. Network Protocol
23. PDF RTF
24. Regular Expressions
25. Security
26. Servlets
27. Spring
28. Swing Components
29. Swing JFC
30. SWT JFace Eclipse
31. Threads
32. Tiny Application
33. Velocity
34. Web Services SOA
35. XML
Microsoft Office Word 2007 Tutorial
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Java » Language Basics » Data Type NumberScreenshots 
A class to represent Complex Numbers


/** A class to represent Complex Numbers. A Complex object is
 * immutable once created; the add, subtract and multiply routines
 * return newly-created Complex objects containing the results.
 *
 @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 (!(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));
  }
}
           
       
Related examples in the same category
1. Arithmetic DemoArithmetic Demo
2. Max Variable Length DemoMax Variable Length Demo
3. Data Type Print TestData Type Print Test
4. Tests all the operators on all the primitive data types
5. Demonstrates the ++ and -- operatorsDemonstrates the ++ and -- operators
6. Literals
7. Demonstrates the mathematical operators.Demonstrates the mathematical operators.
8. Java lets you overflowJava lets you overflow
9. Cast a float or double to an integral valueCast a float or double to an integral value
10. Built in typesBuilt in types
11. A simple casting demo
12. This shows something interesting about addition of byte variablesThis shows something interesting about addition of byte variables
13. Boolean And Or
14. Char is IntChar is Int
15. Class Casting DemoClass Casting Demo
16. Are all hex integers negativeAre all hex integers negative
17. LengthOf - show length of things
18. Shorts Vs IntsShorts Vs Ints
19. Casting Demo
20.  Get Double Number
21. Compute the value of 2/3 of 5Compute the value of 2/3 of 5
22. Floating-point comparisonsFloating-point comparisons
23. Float Double Time Float Double Time
24. Int OverflowInt Overflow
25. Multiply a decimal fraction, not using floating pointMultiply a decimal fraction, not using floating point
26. Show INFINITY and NaN
27. Format a number our way and the default way
28. Parse a number using a NumberFormat
29. Compute the Palindrome of a number by adding the number composed of
30. Compute prime numbers
31. Demonstrate the better way of getting random numbers 3
32. Demonstrate the better way of getting random numbers 2
33. Demonstrate the better way of getting random numbers
34. Generate random ints by asking Random() for
35. Number Format Test Number Format Test
36. Shows default initial valuesShows default initial values
37. Downcasting and Run-Time Type Identification (RTTI)
38. Relational DemoRelational Demo
39. Demonstration of high-precision arithmetic with the BigDouble classDemonstration of high-precision arithmetic with the BigDouble class
40. Demonstration of high-precision integer arithmetic with the BigInteger classDemonstration of high-precision integer arithmetic with the BigInteger class
41. Floating-pioint error diagnostics
42. Obtaining the integer and fractional parts
43. Floating pioint comparisons
44. Value Of Demo
45. Float compare to Float compare to
w___w__w__.___j_a_v__a___2___s.___c__o___m___ | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.