org.ojalgo.scalar
Class ComplexNumber

java.lang.Object
  extended by java.lang.Number
      extended by org.ojalgo.scalar.ComplexNumber
All Implemented Interfaces:
Serializable, Comparable<ComplexNumber>, Scalar<ComplexNumber>

public final class ComplexNumber
extends Number

ComplexNumber is an immutable complex number class. It only implements the most basic complex number operations. ComplexFunction implements some of the more complicated ones.

Author:
apete
See Also:
ComplexFunction, Serialized Form

Field Summary
static ComplexNumber I
           
static ComplexNumber INFINITY
           
static ComplexNumber ONE
           
static ComplexNumber TWO
           
static ComplexNumber ZERO
           
 
Constructor Summary
ComplexNumber(double aRealValue)
           
 
Method Summary
 ComplexNumber add(ComplexNumber aNumber)
           
 ComplexNumber add(double aValue)
           
 int compareTo(ComplexNumber aNmbr)
           
 ComplexNumber conjugate()
           
 ComplexNumber divide(ComplexNumber aNumber)
           
 ComplexNumber divide(double aValue)
           
 double doubleValue()
           
 ComplexNumber enforce(NumberContext aCntxt)
          Will call NumberContext.enforce(double) on the real and imaginary parts separately.
 boolean equals(Object someObj)
           
 boolean equals(Scalar<?> aSclr)
           
 float floatValue()
           
 double getArgument()
           
 double getImaginary()
           
 double getModulus()
           
 ComplexNumber getNumber()
           
 double getReal()
           
 int hashCode()
           
 int intValue()
           
 ComplexNumber invert()
           
 boolean isAbsolute()
           
 boolean isInfinite()
           
 boolean isNaN()
           
 boolean isPositive()
          Strictly Positive, and definately real.
 boolean isReal()
           
 boolean isZero()
          Intends to capture if a scalar is numerically/practically zero, and in a way that is concistent between different implementations.
 long longValue()
           
static ComplexNumber makePolar(double modulus, double argument)
           
static ComplexNumber makeRectangular(double real, double imaginary)
           
 ComplexNumber multiply(ComplexNumber aNumber)
           
 ComplexNumber multiply(double aValue)
           
 ComplexNumber negate()
           
 Scalar<ComplexNumber> power(int anExp)
           
 ComplexNumber root(int anExp)
           
 ComplexNumber round(NumberContext aCntxt)
          Will call NumberContext.round(double) on the real and imaginary parts separately.
 ComplexNumber signum()
           
 ComplexNumber subtract(ComplexNumber aNumber)
           
 ComplexNumber subtract(double aValue)
           
 BigDecimal toBigDecimal()
           
 ComplexNumber toComplexNumber()
           
 RationalNumber toRationalNumber()
           
 String toString()
           
 
Methods inherited from class java.lang.Number
byteValue, shortValue
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

I

public static final ComplexNumber I

INFINITY

public static final ComplexNumber INFINITY

ONE

public static final ComplexNumber ONE

TWO

public static final ComplexNumber TWO

ZERO

public static final ComplexNumber ZERO
Constructor Detail

ComplexNumber

public ComplexNumber(double aRealValue)
Method Detail

makePolar

public static ComplexNumber makePolar(double modulus,
                                      double argument)

makeRectangular

public static ComplexNumber makeRectangular(double real,
                                            double imaginary)

add

public ComplexNumber add(ComplexNumber aNumber)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

add

public ComplexNumber add(double aValue)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

compareTo

public int compareTo(ComplexNumber aNmbr)

conjugate

public ComplexNumber conjugate()
See Also:
Scalar.conjugate(), Scalar.invert(), Scalar.negate()

divide

public ComplexNumber divide(ComplexNumber aNumber)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

divide

public ComplexNumber divide(double aValue)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

doubleValue

public double doubleValue()
Specified by:
doubleValue in class Number
See Also:
Number.doubleValue()

enforce

public ComplexNumber enforce(NumberContext aCntxt)
Will call NumberContext.enforce(double) on the real and imaginary parts separately.

See Also:
Scalar.enforce(org.ojalgo.type.context.NumberContext)

equals

public boolean equals(Scalar<?> aSclr)

floatValue

public float floatValue()
Specified by:
floatValue in class Number
See Also:
Number.floatValue()

getArgument

public double getArgument()
See Also:
Scalar.getArgument(), Scalar.getImaginary(), Scalar.getModulus(), Scalar.getReal()

getImaginary

public double getImaginary()
See Also:
Scalar.getArgument(), Scalar.getImaginary(), Scalar.getModulus(), Scalar.getReal()

getModulus

public double getModulus()
See Also:
Scalar.getArgument(), Scalar.getImaginary(), Scalar.getModulus(), Scalar.getReal()

getNumber

public ComplexNumber getNumber()

getReal

public double getReal()
See Also:
Scalar.getArgument(), Scalar.getImaginary(), Scalar.getModulus(), Scalar.getReal()

intValue

public int intValue()
Specified by:
intValue in class Number
See Also:
Number.intValue()

invert

public ComplexNumber invert()
See Also:
Scalar.conjugate(), Scalar.invert(), Scalar.negate()

isAbsolute

public boolean isAbsolute()
Returns:
true if this is equal to its own modulus (non-negative real part and no imaginary part); otherwise false.
See Also:
Scalar.isAbsolute(), Scalar.isInfinite(), Scalar.isNaN(), Scalar.isReal(), Scalar.isPositive(), Scalar.isZero()

isInfinite

public boolean isInfinite()
See Also:
Scalar.isAbsolute(), Scalar.isInfinite(), Scalar.isNaN(), Scalar.isReal(), Scalar.isPositive(), Scalar.isZero()

isNaN

public boolean isNaN()
See Also:
Scalar.isAbsolute(), Scalar.isInfinite(), Scalar.isNaN(), Scalar.isReal(), Scalar.isPositive(), Scalar.isZero()

isReal

public boolean isReal()
Returns:
true if there is the imaginary part is negligible; otherwise false.
See Also:
Scalar.isAbsolute(), Scalar.isInfinite(), Scalar.isNaN(), Scalar.isReal(), Scalar.isPositive(), Scalar.isZero()

isPositive

public boolean isPositive()
Description copied from interface: Scalar
Strictly Positive, and definately real. Real, as defined by Scalar.isReal(), not zero, as defined by Scalar.isZero(), and > 0.0.

Returns:
true if the real part is strictly positive (not zero) and the imaginary part negligible; otherwise false.
See Also:
Scalar.isAbsolute(), Scalar.isInfinite(), Scalar.isNaN(), Scalar.isReal(), Scalar.isPositive(), Scalar.isZero()

isZero

public boolean isZero()
Description copied from interface: Scalar
Intends to capture if a scalar is numerically/practically zero, and in a way that is concistent between different implementations. The potential exactness of BigScalar and RationalNumber should not be reflected here.

Returns:
true if the modulus is (practically) zero; otherwise false.
See Also:
Scalar.isAbsolute(), Scalar.isInfinite(), Scalar.isNaN(), Scalar.isReal(), Scalar.isPositive(), Scalar.isZero()

longValue

public long longValue()
Specified by:
longValue in class Number
See Also:
Number.longValue()

multiply

public ComplexNumber multiply(ComplexNumber aNumber)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

multiply

public ComplexNumber multiply(double aValue)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

negate

public ComplexNumber negate()
See Also:
Scalar.conjugate(), Scalar.invert(), Scalar.negate()

power

public Scalar<ComplexNumber> power(int anExp)
See Also:
Scalar.power(int), Scalar.root(int)

root

public ComplexNumber root(int anExp)
See Also:
Scalar.power(int), Scalar.root(int)

round

public ComplexNumber round(NumberContext aCntxt)
Will call NumberContext.round(double) on the real and imaginary parts separately.

See Also:
Scalar.enforce(org.ojalgo.type.context.NumberContext)

signum

public ComplexNumber signum()

subtract

public ComplexNumber subtract(ComplexNumber aNumber)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

subtract

public ComplexNumber subtract(double aValue)
See Also:
Scalar.add(double), Scalar.add(Number), Scalar.divide(double), Scalar.divide(Number), Scalar.multiply(double), Scalar.multiply(Number), Scalar.subtract(double), Scalar.subtract(Number)

toBigDecimal

public BigDecimal toBigDecimal()

toComplexNumber

public ComplexNumber toComplexNumber()

toRationalNumber

public RationalNumber toRationalNumber()

toString

public String toString()
Overrides:
toString in class Object
See Also:
Object.toString()

equals

public final boolean equals(Object someObj)
Overrides:
equals in class Object

hashCode

public final int hashCode()
Overrides:
hashCode in class Object