Class Apcomplex
- All Implemented Interfaces:
Serializable,Formattable
- Direct Known Subclasses:
Apfloat
Apfloat.
Note that although the Apcomplex class extends Number,
the methods inherited from Number return the value of
the real part of the complex number. Thus they are more meaningful
for the Apfloat class and its subclasses.
- Version:
- 1.13.0
- Author:
- Mikko Tommila
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longDefault precision.static final ApcomplexImaginary unit.static final longInfinite precision or scale.static final ApintConstant for one.static final Comparator<Apcomplex> Comparator for ordering by real part, and in case of a tie, by the absolute value of the imaginary part.static final Comparator<Apcomplex> Comparator for ordering by real part, and in case of a tie, by imaginary part.static final ApintConstant for zero. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDefault constructor.Reads an apcomplex from a reader.Constructs an apcomplex from a string.Construct a real apcomplex whose imaginary part is zero.Construct an apcomplex with the specified real and imaginary part. -
Method Summary
Modifier and TypeMethodDescriptionAdds two apcomplex numbers.byteReturns the value of the this number as abyte.byteReturns the value of the this number as abyte, checking for lost information.conj()Returns the complex conjugate of this apcomplex.Divides two apcomplex numbers.doubleReturns the value of the this number as adouble.longComputes number of equal digits.booleanCompares this object to the specified object.floatReturns the value of the this number as afloat.voidFormats the object using the provided formatter.inthashCode()Returns a hash code for this apcomplex.imag()Returns the imaginary part of this apcomplex.intintValue()Returns the value of the this number as anint.intReturns the value of the this number as anint, checking for lost information.booleanReturns if this number has an integer value.booleanisZero()Returns if this number is zero.longReturns the value of the this number as along.longReturns the value of the this number as along, checking for lost information.Multiplies two apcomplex numbers.negate()Negative value.longReturns the precision of this apcomplex.precision(long precision) Returns an apcomplex with the same value as this apcomplex accurate to the specified precision.intradix()Radix of this apcomplex.real()Returns the real part of this apcomplex.longscale()Returns the scale of this apcomplex.shortReturns the value of the this number as ashort.shortReturns the value of the this number as ashort, checking for lost information.longsize()Returns the size of this apcomplex.Subtracts two apcomplex numbers.booleanTests two apcomplex numbers for equality.toRadix(int radix) Convert this apcomplex to the specified radix.toString()Returns a string representation of this apcomplex.toString(boolean pretty) Returns a string representation of this apcomplex.voidWrite a string representation of this apcomplex to aWriter.voidWrite a string representation of this apcomplex to aWriter.
-
Field Details
-
ZERO
Constant for zero. It is safe to useZEROin all addition, subtraction, multiplication, division and comparison operations regardless of the radix used. -
ONE
Constant for one. Note that this number is created using the initial default radix. It is safe to useONEin all multiplication, division and equality comparison operations regardless of the radix used. However, in subtraction and addition it only works with numbers in the same radix. -
I
Imaginary unit. That is,Apcomplex(ZERO, ONE). It is safe to useIin all multiplication, division and equality comparison operations regardless of the radix used. In addition and subtraction it only works with numbers in the same radix. -
INFINITE
public static final long INFINITEInfinite precision or scale. Can be used as the precision argument when constructing apfloats.- See Also:
-
DEFAULT
public static final long DEFAULTDefault precision. Can be used as an argument when constructing apfloats.- See Also:
-
REAL_IMAG_ORDER
Comparator for ordering by real part, and in case of a tie, by imaginary part. -
REAL_ABS_IMAG_ORDER
Comparator for ordering by real part, and in case of a tie, by the absolute value of the imaginary part. If a tie persists, order by imaginary part.
-
-
Constructor Details
-
Apcomplex
protected Apcomplex()Default constructor. To be used only by subclasses that overload all needed methods. -
Apcomplex
Construct a real apcomplex whose imaginary part is zero.- Parameters:
real- The real part of the number.
-
Apcomplex
Construct an apcomplex with the specified real and imaginary part.- Parameters:
real- The real part of the number.imag- The imaginary part of the number.- Throws:
IllegalArgumentException- If the real part and imaginary part are not zero but have different radixes.
-
Apcomplex
Constructs an apcomplex from a string.The input must be of one of the formats
realPart
"(" [whitespace] realPart [whitespace] ")"
"(" [whitespace] realPart [whitespace] "," [whitespace] imaginaryPart [whitespace] ")"- Parameters:
value- The input string.- Throws:
NumberFormatException- If the number is invalid.ApfloatRuntimeException
-
Apcomplex
public Apcomplex(PushbackReader in) throws IOException, NumberFormatException, ApfloatRuntimeException Reads an apcomplex from a reader. The constructor stops reading at the first character it doesn't understand. The reader must thus be aPushbackReaderso that the invalid character can be returned back to the stream.The input must be of one of the formats
realPart
"(" [whitespace] realPart [whitespace] ")"
"(" [whitespace] realPart [whitespace] "," [whitespace] imaginaryPart [whitespace] ")"- Parameters:
in- The input stream.- Throws:
IOException- In case of I/O error reading from the stream.NumberFormatException- If the number is invalid.ApfloatRuntimeException
-
-
Method Details
-
radix
public int radix()Radix of this apcomplex.- Returns:
- Radix of this apcomplex.
-
real
Returns the real part of this apcomplex.- Returns:
- The real part of this apcomplex.
-
imag
Returns the imaginary part of this apcomplex.- Returns:
- The imaginary part of this apcomplex.
-
conj
Returns the complex conjugate of this apcomplex.- Returns:
x - i y, where this apcomplex isx + i y.- Throws:
ApfloatRuntimeException
-
precision
Returns the precision of this apcomplex.- Returns:
- The precision of this apcomplex in number of digits of the radix in which it's presented.
- Throws:
ApfloatRuntimeException
-
precision
Returns an apcomplex with the same value as this apcomplex accurate to the specified precision.If the requested precision less than this number's current precision, the functionality is quite obvious: the precision is simply truncated, and e.g. comparison and equality checking will work as expected. Some rounding errors in e.g. addition and subtraction may still occur, as "invisible" trailing digits can remain in the number.
If the requested precision more than this number's current precision, the functionality is quite undefined: the digits up to this number's current precision are guaranteed to be the same, but the "new" digits are undefined: they may be zero, or they may be digits that have been previously discarded with a call to precision() with a smaller number of digits, or they may be something else, or any combination of these.
These limitations allow various performance optimizations to be made.
- Parameters:
precision- Precision of the new apcomplex.- Returns:
- An apcomplex with the specified precision and same value as this apcomplex.
- Throws:
IllegalArgumentException- Ifprecisionis <= 0.ApfloatRuntimeException- Since:
- 1.2
-
scale
Returns the scale of this apcomplex. The scale is the maximum of the scale of the real part and imaginary part.Zero has a scale of
-INFINITE.- Returns:
- The exponent of this apcomplex in number of digits of the radix in which it's presented.
- Throws:
ApfloatRuntimeException- See Also:
-
size
Returns the size of this apcomplex. The size is the maximum of the size of the real part and imaginary part.Zero has a size of
0.- Returns:
- The number of digits in this number, from the most significant digit to the least significant nonzero digit, in the radix in which it's presented.
- Throws:
ApfloatRuntimeException- Since:
- 1.6
- See Also:
-
isZero
Returns if this number is zero.- Returns:
- If this number is zero.
- Throws:
ApfloatRuntimeException- Since:
- 1.13.0
-
isInteger
Returns if this number has an integer value. Note that this does not necessarily mean that this object is an instance ofApint. Neither does it mean that the precision is infinite.A complex number needs to have a zero imaginary part to be an integer.
- Returns:
- If this number's value is an integer.
- Throws:
ApfloatRuntimeException- Since:
- 1.9.0
-
negate
Negative value.- Returns:
-this.- Throws:
ApfloatRuntimeException- Since:
- 1.1
-
add
Adds two apcomplex numbers.- Parameters:
z- The number to be added to this number.- Returns:
this + z.- Throws:
ApfloatRuntimeException
-
subtract
Subtracts two apcomplex numbers.- Parameters:
z- The number to be subtracted from this number.- Returns:
this - z.- Throws:
ApfloatRuntimeException
-
multiply
Multiplies two apcomplex numbers.- Parameters:
z- The number to be multiplied by this number.- Returns:
this * z.- Throws:
ApfloatRuntimeException
-
divide
Divides two apcomplex numbers.- Parameters:
z- The number by which this number is to be divided.- Returns:
this / z.- Throws:
ArithmeticException- In case the divisor is zero.ApfloatRuntimeException
-
doubleValue
public double doubleValue()Returns the value of the this number as adouble. Only takes the real part of this number.- Specified by:
doubleValuein classNumber- Returns:
- The numeric value represented by this object after conversion to type
double. - See Also:
-
floatValue
public float floatValue()Returns the value of the this number as afloat. Only takes the real part of this number.- Specified by:
floatValuein classNumber- Returns:
- The numeric value represented by this object after conversion to type
float. - See Also:
-
byteValue
-
shortValue
public short shortValue()Returns the value of the this number as ashort. Only takes the real part of this number.- Overrides:
shortValuein classNumber- Returns:
- The numeric value represented by this object after conversion to type
short. - See Also:
-
intValue
-
longValue
-
byteValueExact
Returns the value of the this number as abyte, checking for lost information. If the value of this number is out of the range of thebytetype, then anArithmeticExceptionis thrown.- Returns:
- The numeric value represented by this object after conversion to type
byte. - Throws:
ArithmeticException- If the value ofthiswill not exactly fit in abyteor has a nonzero fractional part.- Since:
- 1.9.0
-
shortValueExact
Returns the value of the this number as ashort, checking for lost information. If the value of this number is out of the range of theshorttype, then anArithmeticExceptionis thrown.- Returns:
- The numeric value represented by this object after conversion to type
shortor has a nonzero fractional part. - Throws:
ArithmeticException- If the value ofthiswill not exactly fit in ashort.- Since:
- 1.9.0
-
intValueExact
Returns the value of the this number as anint, checking for lost information. If the value of this number is out of the range of theinttype, then anArithmeticExceptionis thrown.- Returns:
- The numeric value represented by this object after conversion to type
int. - Throws:
ArithmeticException- If the value ofthiswill not exactly fit in anintor has a nonzero fractional part.- Since:
- 1.9.0
-
longValueExact
Returns the value of the this number as along, checking for lost information. If the value of this number is out of the range of thelongtype, then anArithmeticExceptionis thrown.- Returns:
- The numeric value represented by this object after conversion to type
long. - Throws:
ArithmeticException- If the value ofthiswill not exactly fit in alongor has a nonzero fractional part.- Since:
- 1.9.0
-
equalDigits
Computes number of equal digits.Compares the digits of the numbers starting from the most significant digits. The exponent and sign are taken into consideration, so if either one doesn't match, the numbers are considered to have zero equal digits.
For example, the numbers (12345, 123) and (123456, 12) have zero matching digits, and the numbers (12345, 12) and (12355, 13) have three matching digits.
- Parameters:
z- Number to compare with.- Returns:
- Number of matching digits in the radix in which the numbers are presented.
- Throws:
ApfloatRuntimeException
-
toRadix
Convert this apcomplex to the specified radix.- Parameters:
radix- The radix.- Returns:
- This number in the specified radix.
- Throws:
NumberFormatException- If the radix is invalid.ApfloatRuntimeException- Since:
- 1.2
-
equals
Compares this object to the specified object.Note: two apfloats are considered equal if they have an identical mantissa, but different precision.
-
test
Tests two apcomplex numbers for equality. Returnsfalseif the numbers are definitely known to be not equal. Iftrueis returned, equality is unknown and should be verified by callingequals(Object). This method is usually significantly faster than callingequals(Object).- Parameters:
z- The number to test against.- Returns:
falseif the numbers are definitely not equal,trueif unknown.- Throws:
ApfloatRuntimeException- Since:
- 1.10.0
-
hashCode
-
toString
-
toString
Returns a string representation of this apcomplex.- Parameters:
pretty-trueto use a fixed-point notation,falseto use an exponential notation.- Returns:
- A string representing this object.
- Throws:
ApfloatRuntimeException
-
writeTo
Write a string representation of this apcomplex to aWriter.- Parameters:
out- The outputWriter.- Throws:
IOException- In case of I/O error writing to the stream.ApfloatRuntimeException
-
writeTo
Write a string representation of this apcomplex to aWriter.- Parameters:
out- The outputWriter.pretty-trueto use a fixed-point notation,falseto use an exponential notation.- Throws:
IOException- In case of I/O error writing to the stream.ApfloatRuntimeException
-
formatTo
Formats the object using the provided formatter.- Specified by:
formatToin interfaceFormattable- Parameters:
formatter- The formatter.flags- The flags to modify the output format.width- The minimum number of characters to be written to the output, or-1for no minimum.precision- The maximum number of characters to be written to the output, or-1for no maximum.- Since:
- 1.3
- See Also:
-