JScience v4.3

org.jscience.mathematics.number
Class FloatingPoint

java.lang.Object
  extended by java.lang.Number
      extended by org.jscience.mathematics.number.Number<FloatingPoint>
          extended by org.jscience.mathematics.number.FloatingPoint
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable<FloatingPoint>, javolution.lang.Immutable, javolution.lang.Realtime, javolution.lang.ValueType, javolution.xml.XMLSerializable, Field<FloatingPoint>, GroupAdditive<FloatingPoint>, GroupMultiplicative<FloatingPoint>, Ring<FloatingPoint>, Structure<FloatingPoint>

public final class FloatingPoint
extends Number<FloatingPoint>
implements Field<FloatingPoint>

This class represents a floating point number of arbitrary precision. A floating point number consists of a significand and a decimal exponent: (significand · 10exponent).

Unlike Real numbers, no calculation error is performed on floating point instances but the number of digits used during calculations can be specified (see setDigits(int)). The largest the number of digits, the smallest the numeric error. For example:

         FloatingPoint two = FloatingPoint.valueOf(2); 
         FloatingPoint.setDigits(30); // 30 digits calculations.
         System.out.println(two.sqrt());
     >   0.141421356237309504880168872420E1
     

Instances of this class are immutable and can be used to find accurate solutions to linear equations with the Matrix class.

Version:
4.1, June 8, 2007
Author:
Jean-Marie Dautelle
See Also:
Wikipedia: Floating point, Serialized Form

Field Summary
static FloatingPoint NaN
          The Not-a-Number instance (unique).
static FloatingPoint ONE
          The floating point instance representing the multiplicative identity.
static FloatingPoint ZERO
          The floating point instance representing the additive identity.
 
Method Summary
 FloatingPoint abs()
          Returns the absolute value of this floating point number.
 int compareTo(FloatingPoint that)
          Compares two floating point number numerically.
 FloatingPoint copy()
          Returns a copy of this number allocated by the calling thread (possibly on the stack).
 FloatingPoint divide(FloatingPoint that)
          Returns this floating point number divided by the one specified.
 double doubleValue()
          Returns the value of this floating point number as a double.
 boolean equals(java.lang.Object that)
          Compares this floating point number against the specified object.
static int getDigits()
          Returns the local number of digits used during calculations (default 20 digits).
 int getExponent()
          Returns the decimal exponent.
 LargeInteger getSignificand()
          Returns the significand value.
 int hashCode()
          Returns the hash code for this floating point number.
 FloatingPoint inverse()
          Returns the inverse of this floating point number.
 boolean isLargerThan(FloatingPoint that)
          Compares the absolute value of two FloatingPoint numbers.
 boolean isNaN()
          Indicates if this floating point is Not-a-Number.
 boolean isNegative()
          Indicates if this rational number is less than zero.
 boolean isPositive()
          Indicates if this floating point number is greater than zero.
 boolean isZero()
          Indicates if this floating point number is equal to zero.
 long longValue()
          Returns the value of this floating point number as a long.
 FloatingPoint minus(FloatingPoint that)
          Returns the difference between this FloatingPoint number and the one specified.
 FloatingPoint opposite()
          Returns the opposite of this floating point number.
 FloatingPoint plus(FloatingPoint that)
          Returns the sum of this floating point number with the one specified.
 LargeInteger round()
          Returns the closest integer to this floating point number.
static void setDigits(int digits)
          Sets the local number of digits to be used during calculations.
 FloatingPoint sqrt()
          Returns the square root of this floating point number.
 FloatingPoint times(FloatingPoint that)
          Returns the product of this floating point number with the one specified.
 FloatingPoint times(long multiplier)
          Returns the product of this floating point number with the specified long multiplier.
 javolution.text.Text toText()
          Returns the decimal text representation of this number.
static FloatingPoint valueOf(java.lang.CharSequence chars)
          Returns the floating point number for the specified character sequence.
static FloatingPoint valueOf(double doubleValue)
          Returns the floating point number for the specified double value (convenience method).
static FloatingPoint valueOf(LargeInteger significand, int exponent)
          Returns the floating point number for the specified LargeInteger significand and power of two exponent.
static FloatingPoint valueOf(long longValue)
          Returns the floating point number for the specified long value (convenience method).
static FloatingPoint valueOf(long significand, int exponent)
          Returns the floating point number for the specified long significand and power of two exponent (convenience method).
 
Methods inherited from class org.jscience.mathematics.number.Number
byteValue, floatValue, intValue, isGreaterThan, isLessThan, pow, shortValue, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ZERO

public static final FloatingPoint ZERO
The floating point instance representing the additive identity.


ONE

public static final FloatingPoint ONE
The floating point instance representing the multiplicative identity.


NaN

public static final FloatingPoint NaN
The Not-a-Number instance (unique).

Method Detail

valueOf

public static FloatingPoint valueOf(LargeInteger significand,
                                    int exponent)
Returns the floating point number for the specified LargeInteger significand and power of two exponent.

Parameters:
significand - the significand value.
exponent - the power of two exponent.
Returns:
(significand · 2exponent

valueOf

public static FloatingPoint valueOf(long significand,
                                    int exponent)
Returns the floating point number for the specified long significand and power of two exponent (convenience method).

Parameters:
significand - the significand value.
exponent - the power of two exponent.
Returns:
(significand · 2exponent

valueOf

public static FloatingPoint valueOf(long longValue)
Returns the floating point number for the specified long value (convenience method).

Parameters:
longValue - the long value.
Returns:
FloatingPoint.valueOf(longValue, 0)

valueOf

public static FloatingPoint valueOf(double doubleValue)
Returns the floating point number for the specified double value (convenience method).

Parameters:
doubleValue - the double value.
Returns:
FloatingPoint.valueOf(longValue, 0)

valueOf

public static FloatingPoint valueOf(java.lang.CharSequence chars)
Returns the floating point number for the specified character sequence. The number of digits

Parameters:
chars - the character sequence.
Returns:
the corresponding FloatingPoint number.

getDigits

public static int getDigits()
Returns the local number of digits used during calculations (default 20 digits).

Returns:
the number of digits.

setDigits

public static void setDigits(int digits)
Sets the local number of digits to be used during calculations.

Parameters:
digits - the number of digits.
Throws:
java.lang.IllegalArgumentException - if digits <= 0

getSignificand

public LargeInteger getSignificand()
Returns the significand value.

Returns:
this floating point significand.

getExponent

public int getExponent()
Returns the decimal exponent.

Returns:
this floating point decimal exponent.

round

public LargeInteger round()
Returns the closest integer to this floating point number.

Returns:
this floating point rounded to the nearest integer.

opposite

public FloatingPoint opposite()
Returns the opposite of this floating point number.

Specified by:
opposite in interface GroupAdditive<FloatingPoint>
Returns:
-this.

plus

public FloatingPoint plus(FloatingPoint that)
Returns the sum of this floating point number with the one specified.

Specified by:
plus in interface GroupAdditive<FloatingPoint>
Parameters:
that - the floating point number to be added.
Returns:
this + that.

minus

public FloatingPoint minus(FloatingPoint that)
Returns the difference between this FloatingPoint number and the one specified.

Overrides:
minus in class Number<FloatingPoint>
Parameters:
that - the floating point number to be subtracted.
Returns:
this - that.

times

public FloatingPoint times(long multiplier)
Returns the product of this floating point number with the specified long multiplier.

Parameters:
multiplier - the long multiplier.
Returns:
this · multiplier.

times

public FloatingPoint times(FloatingPoint that)
Returns the product of this floating point number with the one specified.

Specified by:
times in interface GroupMultiplicative<FloatingPoint>
Specified by:
times in interface Ring<FloatingPoint>
Parameters:
that - the floating point number multiplier.
Returns:
this · that.

inverse

public FloatingPoint inverse()
Returns the inverse of this floating point number.

Specified by:
inverse in interface GroupMultiplicative<FloatingPoint>
Returns:
1 / this.
Throws:
java.lang.ArithmeticException - if dividend.isZero()

divide

public FloatingPoint divide(FloatingPoint that)
Returns this floating point number divided by the one specified.

Parameters:
that - the FloatingPoint number divisor.
Returns:
this / that.
Throws:
java.lang.ArithmeticException - if that.equals(ZERO)

abs

public FloatingPoint abs()
Returns the absolute value of this floating point number.

Returns:
|this|.

sqrt

public FloatingPoint sqrt()
Returns the square root of this floating point number.

Returns:
the positive square root of this floating point number.

isZero

public boolean isZero()
Indicates if this floating point number is equal to zero.

Returns:
this == 0

isPositive

public boolean isPositive()
Indicates if this floating point number is greater than zero.

Returns:
this > 0

isNegative

public boolean isNegative()
Indicates if this rational number is less than zero.

Returns:
this < 0

isNaN

public boolean isNaN()
Indicates if this floating point is Not-a-Number.

Returns:
true if this number has unbounded value; false otherwise.

isLargerThan

public boolean isLargerThan(FloatingPoint that)
Compares the absolute value of two FloatingPoint numbers.

Specified by:
isLargerThan in class Number<FloatingPoint>
Parameters:
that - the FloatingPoint number to be compared with.
Returns:
|this| > |that|

toText

public javolution.text.Text toText()
Returns the decimal text representation of this number.

Specified by:
toText in interface javolution.lang.Realtime
Specified by:
toText in class Number<FloatingPoint>
Returns:
the text representation of this number.

equals

public boolean equals(java.lang.Object that)
Compares this floating point number against the specified object.

Specified by:
equals in class Number<FloatingPoint>
Parameters:
that - the object to compare with.
Returns:
true if the objects are the same; false otherwise.

hashCode

public int hashCode()
Returns the hash code for this floating point number.

Specified by:
hashCode in class Number<FloatingPoint>
Returns:
the hash code value.

longValue

public long longValue()
Returns the value of this floating point number as a long.

Specified by:
longValue in class Number<FloatingPoint>
Returns:
the numeric value represented by this floating point after conversion to type long.

doubleValue

public double doubleValue()
Returns the value of this floating point number as a double.

Specified by:
doubleValue in class Number<FloatingPoint>
Returns:
the numeric value represented by this FloatingPoint after conversion to type double.

compareTo

public int compareTo(FloatingPoint that)
Compares two floating point number numerically.

Specified by:
compareTo in interface java.lang.Comparable<FloatingPoint>
Specified by:
compareTo in class Number<FloatingPoint>
Parameters:
that - the floating point number to compare with.
Returns:
-1, 0 or 1 as this FloatingPoint number is numerically less than, equal to, or greater than that.

copy

public FloatingPoint copy()
Description copied from class: Number
Returns a copy of this number allocated by the calling thread (possibly on the stack).

Specified by:
copy in interface javolution.lang.ValueType
Specified by:
copy in class Number<FloatingPoint>
Returns:
an identical and independant copy of this number.

JScience v4.3

Copyright © 2006 JScience.