Class BigComplex
BigDecimal
part in the form a + bi
.
It generally follows the design of BigDecimal
with some convenience improvements like overloaded operator methods.
The biggest difference to BigDecimal
is that BigComplex.equals(Object)
implements the mathematical equality
and not the strict technical equality.
This was a difficult decision because it means that BigComplex
behaves slightly different than BigDecimal
but considering that the strange equality of BigDecimal
is a major source of bugs we
decided it was worth the slight inconsistency.
If you need the strict equality use strictEquals(Object)
`.
This class is immutable and therefore inherently thread safe.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final BigComplex
Imaginary 1 represented as complex number.final BigDecimal
The imaginaryBigDecimal
part of this complex number.static final BigComplex
Real 1 represented as complex number.final BigDecimal
The realBigDecimal
part of this complex number.static final BigComplex
Zero represented as complex number. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabs
(MathContext mathContext) Calculates the absolute value (also known as magnitude, length or radius) of this complex number.absSquare
(MathContext mathContext) Calculates the square of the absolute value of this complex number.add
(double value) Calculates the addition of the given realdouble
value to this complex number.add
(BigComplex value) Calculates the addition of the given complex value to this complex number.add
(BigComplex value, MathContext mathContext) Calculates the addition of the given complex value to this complex number using the specifiedMathContext
.add
(BigDecimal value) Calculates the addition of the given realBigDecimal
value to this complex number.add
(BigDecimal value, MathContext mathContext) Calculates the addition of the given realBigDecimal
value to this complex number using the specifiedMathContext
.angle
(MathContext mathContext) Calculates the angle in radians (also known as argument) of this complex number.Calculates the conjugatea - bi
of this complex number.divide
(double value, MathContext mathContext) Calculates this complex number divided by the given realdouble
value using the specifiedMathContext
.divide
(BigComplex value, MathContext mathContext) Calculates this complex number divided by the given complex value using the specifiedMathContext
.divide
(BigDecimal value, MathContext mathContext) Calculates this complex number divided by the given realBigDecimal
value using the specifiedMathContext
.boolean
int
hashCode()
im()
Returns the imaginary part of this complex number asBigComplex
number.boolean
isReal()
Returns whether this complex number only has a real part (the imaginary part is 0).multiply
(double value) Calculates the multiplication of the given realdouble
value with this complex number.multiply
(BigComplex value) Calculates the multiplication of the given complex value to this complex number.multiply
(BigComplex value, MathContext mathContext) Calculates the multiplication of the given complex value with this complex number using the specifiedMathContext
.multiply
(BigDecimal value) Calculates the multiplication of the given realBigDecimal
value with this complex number.multiply
(BigDecimal value, MathContext mathContext) Calculates the multiplication of the given realBigDecimal
value with this complex number using the specifiedMathContext
.negate()
Calculates the negation-a - bi
of this complex number.re()
Returns the real part of this complex number asBigComplex
number.reciprocal
(MathContext mathContext) Calculates the reciprocal of this complex number using the specifiedMathContext
.round
(MathContext mathContext) Returns this complex nuber rounded to the specified precision.boolean
strictEquals
(Object obj) Returns whether the real and imaginary parts of this complex number are strictly equal.subtract
(double value) Calculates the subtraction of the given realdouble
value from this complex number.subtract
(BigComplex value) Calculates the subtraction of the given complex value from this complex number.subtract
(BigComplex value, MathContext mathContext) Calculates the subtraction of the given complex value from this complex number using the specifiedMathContext
.subtract
(BigDecimal value) Calculates the subtraction of the given realBigDecimal
value from this complex number.subtract
(BigDecimal value, MathContext mathContext) Calculates the subtraction of the given realBigDecimal
value from this complex number using the specifiedMathContext
.toString()
static BigComplex
valueOf
(double real) Returns a complex number with the specified realdouble
part.static BigComplex
valueOf
(double real, double imaginary) Returns a complex number with the specified real and imaginarydouble
parts.static BigComplex
valueOf
(BigDecimal real) Returns a complex number with the specified realBigDecimal
part.static BigComplex
valueOf
(BigDecimal real, BigDecimal imaginary) Returns a complex number with the specified real and imaginaryBigDecimal
parts.static BigComplex
valueOfPolar
(double radius, double angle, MathContext mathContext) static BigComplex
valueOfPolar
(BigDecimal radius, BigDecimal angle, MathContext mathContext) Returns a complex number with the specified polarBigDecimal
radius and angle using the specifiedMathContext
.
-
Field Details
-
ZERO
Zero represented as complex number. -
ONE
Real 1 represented as complex number. -
I
Imaginary 1 represented as complex number. -
re
The realBigDecimal
part of this complex number. -
im
The imaginaryBigDecimal
part of this complex number.
-
-
Constructor Details
-
BigComplex
-
-
Method Details
-
add
Calculates the addition of the given complex value to this complex number.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to add- Returns:
- the calculated
BigComplex
result
-
add
Calculates the addition of the given complex value to this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to addmathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
add
Calculates the addition of the given realBigDecimal
value to this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- the realBigDecimal
value to addmathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
add
Calculates the addition of the given realBigDecimal
value to this complex number.This methods does not modify this instance.
- Parameters:
value
- the realBigDecimal
value to add- Returns:
- the calculated
BigComplex
result
-
add
Calculates the addition of the given realdouble
value to this complex number.This methods does not modify this instance.
- Parameters:
value
- the realdouble
value to add- Returns:
- the calculated
BigComplex
result
-
subtract
Calculates the subtraction of the given complex value from this complex number.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to subtract- Returns:
- the calculated
BigComplex
result
-
subtract
Calculates the subtraction of the given complex value from this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to subtractmathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
subtract
Calculates the subtraction of the given realBigDecimal
value from this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- the realBigDecimal
value to addmathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
subtract
Calculates the subtraction of the given realBigDecimal
value from this complex number.This methods does not modify this instance.
- Parameters:
value
- the realBigDecimal
value to subtract- Returns:
- the calculated
BigComplex
result
-
subtract
Calculates the subtraction of the given realdouble
value from this complex number.This methods does not modify this instance.
- Parameters:
value
- the realdouble
value to subtract- Returns:
- the calculated
BigComplex
result
-
multiply
Calculates the multiplication of the given complex value to this complex number.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to multiply- Returns:
- the calculated
BigComplex
result
-
multiply
Calculates the multiplication of the given complex value with this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to multiplymathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
multiply
Calculates the multiplication of the given realBigDecimal
value with this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- the realBigDecimal
value to multiplymathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
multiply
Calculates the multiplication of the given realBigDecimal
value with this complex number.This methods does not modify this instance.
- Parameters:
value
- the realBigDecimal
value to multiply- Returns:
- the calculated
BigComplex
result
-
multiply
Calculates the multiplication of the given realdouble
value with this complex number.This methods does not modify this instance.
- Parameters:
value
- the realdouble
value to multiply- Returns:
- the calculated
BigComplex
result
-
divide
Calculates this complex number divided by the given complex value using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- theBigComplex
value to divide bymathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
divide
Calculates this complex number divided by the given realBigDecimal
value using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- theBigDecimal
value to divide bymathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
divide
Calculates this complex number divided by the given realdouble
value using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
value
- thedouble
value to divide bymathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
reciprocal
Calculates the reciprocal of this complex number using the specifiedMathContext
.This methods does not modify this instance.
- Parameters:
mathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
conjugate
Calculates the conjugatea - bi
of this complex number.This methods does not modify this instance.
- Returns:
- the calculated
BigComplex
result
-
negate
Calculates the negation-a - bi
of this complex number.This methods does not modify this instance.
- Returns:
- the calculated
BigComplex
result
-
abs
Calculates the absolute value (also known as magnitude, length or radius) of this complex number.This method is slower than
absSquare(MathContext)
since it needs to calculate theBigDecimalMath.sqrt(BigDecimal, MathContext)
.This methods does not modify this instance.
- Parameters:
mathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result - See Also:
-
angle
Calculates the angle in radians (also known as argument) of this complex number.This methods does not modify this instance.
- Parameters:
mathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result
-
absSquare
Calculates the square of the absolute value of this complex number.This method is faster than
abs(MathContext)
since it does not need to calculate theBigDecimalMath.sqrt(BigDecimal, MathContext)
.This methods does not modify this instance.
- Parameters:
mathContext
- theMathContext
used to calculate the result- Returns:
- the calculated
BigComplex
result - See Also:
-
isReal
public boolean isReal()Returns whether this complex number only has a real part (the imaginary part is 0).- Returns:
true
if this complex number only has a real part,false
if the imaginary part is not 0
-
re
Returns the real part of this complex number asBigComplex
number.- Returns:
- the real part as as
BigComplex
number
-
im
Returns the imaginary part of this complex number asBigComplex
number.- Returns:
- the imaginary part as as
BigComplex
number
-
round
Returns this complex nuber rounded to the specified precision.This methods does not modify this instance.
- Parameters:
mathContext
- theMathContext
used to calculate the result- Returns:
- the rounded
BigComplex
result
-
hashCode
public int hashCode() -
equals
Contrary to
BigDecimal.equals(Object)
this method implements mathematical equality (by callingBigDecimal.compareTo(BigDecimal)
on the real and imaginary parts) instead of strict equality. -
strictEquals
Returns whether the real and imaginary parts of this complex number are strictly equal.This method uses the strict equality as defined by
BigDecimal.equals(Object)
on the real and imaginary parts.Please note that
BigComplex.equals(Object)
implements mathematical equality instead (by callingon the real and imaginary parts
).- Parameters:
obj
- the object to compare for strict equality- Returns:
true
if the specified object is strictly equal to this complex number- See Also:
-
toString
-
valueOf
Returns a complex number with the specified realBigDecimal
part.- Parameters:
real
- the realBigDecimal
part- Returns:
- the complex number
-
valueOf
Returns a complex number with the specified realdouble
part.- Parameters:
real
- the realdouble
part- Returns:
- the complex number
-
valueOf
Returns a complex number with the specified real and imaginarydouble
parts.- Parameters:
real
- the realdouble
partimaginary
- the imaginarydouble
part- Returns:
- the complex number
-
valueOf
Returns a complex number with the specified real and imaginaryBigDecimal
parts.- Parameters:
real
- the realBigDecimal
partimaginary
- the imaginaryBigDecimal
part- Returns:
- the complex number
-
valueOfPolar
Returns a complex number with the specified polarBigDecimal
radius and angle using the specifiedMathContext
.- Parameters:
radius
- theBigDecimal
radius of the polar representationangle
- theBigDecimal
angle in radians of the polar representationmathContext
- theMathContext
used to calculate the result- Returns:
- the complex number
-
valueOfPolar
-