A Class to Test Complex Numbers
From Java Example Source Code
Contents |
[edit] Overview - A Class to Test Complex Numbers
This is a Java example program.
[edit] Java Source Code
- Package: com.darwinsys
- File: ComplexDemo.java
package com.darwinsys; /* * 3.0+5.0i 3.0+5.0i.getReal() = 3.0 3.0+5.0i + 2.0-2.0i = 5.0+3.0i 3.0+5.0i + 2.0-2.0i = 5.0+3.0i * 3.0+5.0i 2.0-2.0i = 16.0+4.0i -0.5+2.0i */ /** * A class to test Complex Numbers. * * @author Ian F. Darwin, http://www.darwinsys.com/ * @version $Id: ComplexDemo.java,v 1.6 2004/05/13 22:28:59 ian Exp $ */ public class ComplexDemo { /** The program */ 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)); } } /** * 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 $ */ 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; } }
[edit] What Result You Can Get
Run the program, you will get:
3.0+5.0i 3.0+5.0i.getReal() = 3.0 3.0+5.0i + 2.0-2.0i = 5.0+3.0i 3.0+5.0i + 2.0-2.0i = 5.0+3.0i 3.0+5.0i * 2.0-2.0i = 16.0+4.0i -0.5+2.0i
[edit] Required External Libraries and/or Files for this Java Example
Need nothing.
[edit] How to Run this Java Example Program
We recommend running this Java example program with Eclipse.
For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.
It's fairly easy.
[edit] Question & Answer
Any question?
Click edit and post your question or answer here.
