org.apfloat
Class Apfloat

java.lang.Object
  |
  +--java.lang.Number
        |
        +--org.apfloat.Apcomplex
              |
              +--org.apfloat.Apfloat
All Implemented Interfaces:
java.lang.Comparable, java.io.Serializable
Direct Known Subclasses:
Aprational

public class Apfloat
extends Apcomplex
implements java.lang.Comparable

Immutable arbitrary precision floating-point number class.

A pitfall exists with the constructors Apfloat(float,long) and Apfloat(double,long). Since floats and doubles are always represented internally in radix 2, the conversion to any other radix usually causes round-off errors, and the resulting apfloat won't be accurate to the desired number of digits.

For example, 0.3 can't be presented exactly in base 2. When you construct an apfloat like new Apfloat(0.3f, 1000), the resulting number won't be accurate to 1000 digits, but only to roughly 7 digits (in radix 10). In fact, the resulting number will be something like 0.30000001192092896...

See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.apfloat.Apcomplex
DEFAULT, I, INFINITE, ONE, ZERO
 
Constructor Summary
protected Apfloat()
          Default constructor.
protected Apfloat(ApfloatImpl impl)
          Constructs an apfloat that is backed by the specified ApfloatImpl object.
  Apfloat(java.math.BigDecimal value)
          Creates and apfloat from a BigDecimal.
  Apfloat(java.math.BigDecimal value, long precision)
          Creates and apfloat from a BigDecimal.
  Apfloat(java.math.BigInteger value)
          Constructs an apfloat from a BigInteger.
  Apfloat(java.math.BigInteger value, long precision)
          Constructs an apfloat from a BigInteger with the specified precision.
  Apfloat(java.math.BigInteger value, long precision, int radix)
          Constructs an apfloat from a BigInteger with the specified precision and radix.
  Apfloat(double value)
          Constructs an apfloat from the specified double.
  Apfloat(double value, long precision)
          Constructs an apfloat from the specified double and precision.
  Apfloat(double value, long precision, int radix)
          Constructs an apfloat from the specified double, precision and radix.
  Apfloat(float value)
          Constructs an apfloat from the specified float.
  Apfloat(float value, long precision)
          Constructs an apfloat from the specified float and precision.
  Apfloat(float value, long precision, int radix)
          Constructs an apfloat from the specified float, precision and radix.
  Apfloat(long value)
          Constructs an apfloat from the specified long.
  Apfloat(long value, long precision)
          Constructs an apfloat from the specified long and precision.
  Apfloat(long value, long precision, int radix)
          Constructs an apfloat from the specified long, precision and radix.
  Apfloat(java.io.PushbackReader in)
          Reads an apfloat from a stream using default precision and radix.
  Apfloat(java.io.PushbackReader in, long precision)
          Reads an apfloat from a stream using the specified precision.
  Apfloat(java.io.PushbackReader in, long precision, int radix)
          Reads an apfloat from a stream using the specified precision and radix.
  Apfloat(java.lang.String value)
          Constructs an apfloat from the specified string.
  Apfloat(java.lang.String value, long precision)
          Constructs an apfloat from the specified string and precision.
  Apfloat(java.lang.String value, long precision, int radix)
          Constructs an apfloat from the specified string, precision and radix.
 
Method Summary
 Apfloat add(Apfloat x)
          Adds two apfloats.
 byte byteValue()
          Returns the value of the this number as a byte.
 Apint ceil()
          Ceiling function.
 int compareTo(Apfloat x)
          Compare this apfloat to the specified apfloat.
 int compareTo(java.lang.Object obj)
          Compare this apfloat to the specified object.
 Apfloat divide(Apfloat x)
          Divides two apfloats.
 double doubleValue()
          Returns the value of the this number as a double.
 long equalDigits(Apfloat x)
          Computes number of equal digits.
 boolean equals(java.lang.Object obj)
          Compares this object to the specified object.
 float floatValue()
          Returns the value of the this number as a float.
 Apint floor()
          Floor function.
protected  ApfloatImpl getImpl(long precision)
          Returns an ApfloatImpl representing the actual instance of this apfloat up to the requested precision.
 int hashCode()
          Returns a hash code for this apfloat.
 Apfloat imag()
          Imaginary part of this apfloat.
 int intValue()
          Returns the value of the this number as an int.
 boolean isShort()
          Returns if this apfloat is "short".
 long longValue()
          Returns the value of the this number as a long.
 Apfloat multiply(Apfloat x)
          Multiplies two apfloats.
 long precision()
          Returns the precision of this apfloat.
 Apfloat precision(long precision)
          Returns an apfloat with the same value as this apfloat accurate to the specified precision.
 int radix()
          Radix of this apfloat.
 Apfloat real()
          Real part of this apfloat.
 long scale()
          Returns the scale of this apfloat.
 short shortValue()
          Returns the value of the this number as a short.
 int signum()
          Returns the signum function of this apfloat.
 Apfloat subtract(Apfloat x)
          Subtracts two apfloats.
 java.lang.String toString(boolean pretty)
          Returns a string representation of this apfloat.
 Apint truncate()
          Truncates fractional part.
 void writeTo(java.io.Writer out, boolean pretty)
          Write a string representation of this apfloat to a Writer.
 
Methods inherited from class org.apfloat.Apcomplex
add, conj, divide, equalDigits, multiply, subtract, toString, writeTo
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Apfloat

protected Apfloat()
Default constructor. To be used only by subclasses that overload all needed methods.


Apfloat

protected Apfloat(ApfloatImpl impl)
Constructs an apfloat that is backed by the specified ApfloatImpl object.

Parameters:
impl - The ApfloatImpl object backing this apfloat.

Apfloat

public Apfloat(java.lang.String value)
        throws java.lang.NumberFormatException,
               ApfloatRuntimeException
Constructs an apfloat from the specified string. The default radix will be used.

The precision will be calculated from the number of digits specified in the string. For example:

"0.1" will have a precision of 1 digit.
"1.0" will have a precision of 2 digits.
"100" will have a precision of 3 digits.

Parameters:
value - The string representing the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.lang.String value,
               long precision)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified string and precision. The default radix will be used.

Parameters:
value - The string representing the number.
precision - The precision of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.lang.String value,
               long precision,
               int radix)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified string, precision and radix.

Note that it's impossible to construct apfloats with a specified exponent and with radix >= 14, since the character 'e' and 'E' will be treated as digits of the mantissa.

For example, in radix 10, "1e5" means the decimal number 100000. But in radix 16, "1e5" means the decimal number 485.

Parameters:
value - The string representing the number.
precision - The precision of the number.
radix - The radix of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(long value)
        throws java.lang.NumberFormatException,
               ApfloatRuntimeException
Constructs an apfloat from the specified long. The default radix will be used. The precision of the number will be Apcomplex.INFINITE.

Parameters:
value - The value of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(long value,
               long precision)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified long and precision. The default radix will be used.

Parameters:
value - The value of the number.
precision - The precision of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(long value,
               long precision,
               int radix)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified long, precision and radix.

Parameters:
value - The value of the number.
precision - The precision of the number.
radix - The radix of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(float value)
        throws java.lang.NumberFormatException,
               ApfloatRuntimeException
Constructs an apfloat from the specified float. The default radix will be used. The precision of the number will be the precision of a float in the default radix, for example in radix 10 the precision is 7 digits.

Parameters:
value - The value of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(float value,
               long precision)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified float and precision. The default radix will be used.

Parameters:
value - The value of the number.
precision - The precision of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(float value,
               long precision,
               int radix)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified float, precision and radix.

Parameters:
value - The value of the number.
precision - The precision of the number.
radix - The radix of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(double value)
        throws java.lang.NumberFormatException,
               ApfloatRuntimeException
Constructs an apfloat from the specified double. The default radix will be used. The precision of the number will be the precision of a double in the default radix, for example in radix 10 the precision is 16 digits.

Parameters:
value - The value of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(double value,
               long precision)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified double and precision. The default radix will be used.

Parameters:
value - The value of the number.
precision - The precision of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(double value,
               long precision,
               int radix)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from the specified double, precision and radix.

Parameters:
value - The value of the number.
precision - The precision of the number.
radix - The radix of the number.
Throws:
java.lang.NumberFormatException - In case the number is invalid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.io.PushbackReader in)
        throws java.io.IOException,
               java.lang.NumberFormatException,
               ApfloatRuntimeException
Reads an apfloat from a stream using default precision and radix. The stream needs to be a PushbackReader, as the first invalid character is pushed back to the stream.

Note that since only a pushback buffer of one character is used, the number read may still not be valid. For example, if the stream contains "-#" or "1.5e#" (here '#' is the first invalid character), the number is actually not valid, and only the character '#' would be put back to the stream.

The precision is determined similarly as in the Apfloat(String) constructor that is as the number of digits read from the stream.

Parameters:
in - The stream to read from
Throws:
java.io.IOException - If an I/O error occurs accessing the stream.
java.lang.NumberFormatException - If the number is not valid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.io.PushbackReader in,
               long precision)
        throws java.io.IOException,
               java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Reads an apfloat from a stream using the specified precision. The default radix is used.

Parameters:
in - The stream to read from
precision - The precision of the number.
Throws:
java.io.IOException - If an I/O error occurs accessing the stream.
java.lang.NumberFormatException - If the number is not valid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException
See Also:
Apfloat(PushbackReader)

Apfloat

public Apfloat(java.io.PushbackReader in,
               long precision,
               int radix)
        throws java.io.IOException,
               java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Reads an apfloat from a stream using the specified precision and radix.

Parameters:
in - The stream to read from
precision - The precision of the number.
radix - The radix of the number.
Throws:
java.io.IOException - If an I/O error occurs accessing the stream.
java.lang.NumberFormatException - If the number is not valid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException
See Also:
Apfloat(PushbackReader)

Apfloat

public Apfloat(java.math.BigInteger value)
        throws java.lang.NumberFormatException,
               ApfloatRuntimeException
Constructs an apfloat from a BigInteger. Precision will be Apcomplex.INFINITE and the default radix is used.

Parameters:
value - The value of the number.
Throws:
java.lang.NumberFormatException - If the default radix is not valid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.math.BigInteger value,
               long precision)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from a BigInteger with the specified precision. The default radix is used.

Parameters:
value - The value of the number.
precision - The precision of the number.
Throws:
java.lang.NumberFormatException - If the default radix is not valid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.math.BigInteger value,
               long precision,
               int radix)
        throws java.lang.NumberFormatException,
               java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Constructs an apfloat from a BigInteger with the specified precision and radix.

Parameters:
value - The value of the number.
precision - The precision of the number.
Throws:
java.lang.NumberFormatException - If the radix is not valid.
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException

Apfloat

public Apfloat(java.math.BigDecimal value)
        throws ApfloatRuntimeException
Creates and apfloat from a BigDecimal. An apfloat created this way will always have radix 10 regardless of the current default radix.

Parameters:
value - The value to use.

Apfloat

public Apfloat(java.math.BigDecimal value,
               long precision)
        throws java.lang.IllegalArgumentException,
               ApfloatRuntimeException
Creates and apfloat from a BigDecimal. An apfloat created this way will always have radix 10 regardless of the current default radix.

Parameters:
value - The value to use.
precision - The precision to use, in decimal digits.
Throws:
java.lang.IllegalArgumentException - In case the precision is invalid.
ApfloatRuntimeException
Method Detail

radix

public int radix()
Radix of this apfloat.

Overrides:
radix in class Apcomplex
Returns:
Radix of this apfloat.

real

public Apfloat real()
Real part of this apfloat.

Overrides:
real in class Apcomplex
Returns:
this

imag

public Apfloat imag()
Imaginary part of this apfloat.

Overrides:
imag in class Apcomplex
Returns:
Apcomplex.ZERO

precision

public long precision()
               throws ApfloatRuntimeException
Returns the precision of this apfloat.

Overrides:
precision in class Apcomplex
Returns:
The precision of this apfloat in number of digits of the radix in which it's presented.
ApfloatRuntimeException

precision

public Apfloat precision(long precision)
                  throws java.lang.IllegalArgumentException,
                         ApfloatRuntimeException
Returns an apfloat with the same value as this apfloat 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 apfloat.
Returns:
An apfloat with the specified precision and same value as this apfloat.
Throws:
java.lang.IllegalArgumentException - If precision is <= 0.
ApfloatRuntimeException

scale

public long scale()
           throws ApfloatRuntimeException
Returns the scale of this apfloat. The scale is defined here as

apfloat = mantissa * radixscale

where 1/radix <= mantissa < 1. In other words, scale = floor(logradix(apfloat) + 1.

For example, 1 has a scale of 1, and 100 has a scale of 3 (in radix 10). For integers, scale is equal to the number of digits in the apfloat.

Zero has a scale of -INFINITE.

Note that this definition of scale is different than in java.util.BigDecimal.

Overrides:
scale in class Apcomplex
Returns:
The exponent of this apfloat in number of digits of the radix in which it's presented.
ApfloatRuntimeException
See Also:
scale()

signum

public int signum()
Returns the signum function of this apfloat.

Returns:
-1, 0 or 1 as the value of this apfloat is negative, zero or positive, correspondingly.

isShort

public boolean isShort()
                throws ApfloatRuntimeException
Returns if this apfloat is "short". In practice an apfloat is "short" if its mantissa fits in one machine word. If the apfloat is "short", some algorithms can be performed faster.

For example, division by a "short" apfloat requires only a single pass through the data, but that algorithm can't be used for divisors that aren't "short", where calculating an inverse root is required instead.

The return value of this method is implementation dependent.

Returns:
true if the apfloat is "short", false if not.
ApfloatRuntimeException

add

public Apfloat add(Apfloat x)
            throws ApfloatRuntimeException
Adds two apfloats.

Parameters:
x - The number to be added to this number.
Returns:
this + x.
ApfloatRuntimeException

subtract

public Apfloat subtract(Apfloat x)
                 throws ApfloatRuntimeException
Subtracts two apfloats.

Parameters:
x - The number to be subtracted from this number.
Returns:
this - x.
ApfloatRuntimeException

multiply

public Apfloat multiply(Apfloat x)
                 throws ApfloatRuntimeException
Multiplies two apfloats.

Parameters:
x - The number to be multiplied by this number.
Returns:
this * x.
ApfloatRuntimeException

divide

public Apfloat divide(Apfloat x)
               throws java.lang.ArithmeticException,
                      ApfloatRuntimeException
Divides two apfloats.

Parameters:
x - The number by which this number is to be divided.
Returns:
this / x.
Throws:
java.lang.ArithmeticException - In case the divisor is zero.
ApfloatRuntimeException

floor

public Apint floor()
            throws ApfloatRuntimeException
Floor function. Returns the largest (closest to positive infinity) value that is not greater than this apfloat and is equal to a mathematical integer.

Returns:
This apfloat rounded towards negative infinity.
ApfloatRuntimeException

ceil

public Apint ceil()
           throws ApfloatRuntimeException
Ceiling function. Returns the smallest (closest to negative infinity) value that is not less than this apfloat and is equal to a mathematical integer.

Returns:
This apfloat rounded towards positive infinity.
ApfloatRuntimeException

truncate

public Apint truncate()
               throws ApfloatRuntimeException
Truncates fractional part.

Returns:
This apfloat rounded towards zero.
ApfloatRuntimeException

doubleValue

public double doubleValue()
Returns the value of the this number as a double. If the number is too big to fit in a double, Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY is returned.

Overrides:
doubleValue in class Apcomplex
Returns:
The numeric value represented by this object after conversion to type double.
See Also:
doubleValue()

floatValue

public float floatValue()
Returns the value of the this number as a float. If the number is too big to fit in a float, Float.POSITIVE_INFINITY or Float.NEGATIVE_INFINITY is returned.

Overrides:
floatValue in class Apcomplex
Returns:
The numeric value represented by this object after conversion to type float.
See Also:
floatValue()

byteValue

public byte byteValue()
Returns the value of the this number as a byte. If the number is too big to fit in a byte, Byte.MIN_VALUE or Byte.MAX_VALUE is returned.

Overrides:
byteValue in class Apcomplex
Returns:
The numeric value represented by this object after conversion to type byte.
See Also:
byteValue()

shortValue

public short shortValue()
Returns the value of the this number as a short. If the number is too big to fit in a short, Short.MIN_VALUE or Short.MAX_VALUE is returned.

Overrides:
shortValue in class Apcomplex
Returns:
The numeric value represented by this object after conversion to type short.
See Also:
shortValue()

intValue

public int intValue()
Returns the value of the this number as an int. If the number is too big to fit in an int, Integer.MIN_VALUE or Integer.MAX_VALUE is returned.

Overrides:
intValue in class Apcomplex
Returns:
The numeric value represented by this object after conversion to type int.
See Also:
intValue()

longValue

public long longValue()
Returns the value of the this number as a long. If the number is too big to fit in a long, Long.MIN_VALUE or Long.MAX_VALUE is returned.

Overrides:
longValue in class Apcomplex
Returns:
The numeric value represented by this object after conversion to type long.
See Also:
longValue()

equalDigits

public long equalDigits(Apfloat x)
                 throws ApfloatRuntimeException
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 and 123456 have zero matching digits, and the numbers 12345 and 12355 have three matching digits.

The result of this method is roughly equal to Math.min(scale(), x.scale()) - subtract(x).scale() but it typically is a lot more efficient to execute.

Parameters:
x - Number to compare with.
Returns:
Number of matching digits in the radix in which the numbers are presented.
ApfloatRuntimeException

compareTo

public int compareTo(Apfloat x)
              throws ApfloatRuntimeException
Compare this apfloat to the specified apfloat.

Note: if two apfloats are compared where one number doesn't have enough precise digits, the mantissa is assumed to contain zeros. For example:

 Apfloat x = new Apfloat("0.12", 2);
 Apfloat y = new Apfloat("0.12345", 5);
 
Now x.compareTo(y) < 0 because x is assumed to be 0.12000.

However, new Apfloat("0.12", 2) and new Apfloat("0.12", 5) would be considered equal.

Parameters:
x - Apfloat to which this apfloat is to be compared.
Returns:
-1, 0 or 1 as this apfloat is numerically less than, equal to, or greater than x.
ApfloatRuntimeException

compareTo

public int compareTo(java.lang.Object obj)
              throws java.lang.ClassCastException
Compare this apfloat to the specified object.

Note: if two apfloats are compared where one number doesn't have enough precise digits, the mantissa is assumed to contain zeros. See compareTo(Apfloat).

Specified by:
compareTo in interface java.lang.Comparable
Parameters:
obj - Object to which this apfloat is to be compared.
Returns:
-1, 0 or 1 as this apfloat is numerically less than, equal to, or greater than obj.
Throws:
java.lang.ClassCastException - If the specified object is not an apfloat.

equals

public boolean equals(java.lang.Object obj)
Compares this object to the specified object.

Note: if two apfloats are compared where one number doesn't have enough precise digits, the mantissa is assumed to contain zeros. See compareTo(Apfloat).

Overrides:
equals in class Apcomplex
Parameters:
obj - The object to compare with.
Returns:
true if the objects are equal; false otherwise.

hashCode

public int hashCode()
Returns a hash code for this apfloat.

Overrides:
hashCode in class Apcomplex
Returns:
The hash code value for this object.

toString

public java.lang.String toString(boolean pretty)
                          throws ApfloatRuntimeException
Returns a string representation of this apfloat.

Overrides:
toString in class Apcomplex
Parameters:
pretty - true to use a fixed-point notation, false to use an exponential notation.
Returns:
A string representing this object.
ApfloatRuntimeException

writeTo

public void writeTo(java.io.Writer out,
                    boolean pretty)
             throws java.io.IOException,
                    ApfloatRuntimeException
Write a string representation of this apfloat to a Writer.

Overrides:
writeTo in class Apcomplex
Parameters:
out - The output Writer.
pretty - true to use a fixed-point notation, false to use an exponential notation.
Throws:
java.io.IOException - In case of I/O error writing to the stream.
ApfloatRuntimeException

getImpl

protected ApfloatImpl getImpl(long precision)
                       throws ApfloatRuntimeException
Returns an ApfloatImpl representing the actual instance of this apfloat up to the requested precision.

For apfloats this is simply the underlying ApfloatImpl, but e.g. the Aprational class implements this so that it only returns an approximation of the rational number.

Parameters:
precision - Precision of the ApfloatImpl that is needed.
Returns:
An ApfloatImpl representing this object to the requested precision.
ApfloatRuntimeException