org.znerd.math
Class Sum

java.lang.Object
  extended by java.lang.Number
      extended by org.znerd.math.RealNumber
          extended by org.znerd.math.CompositeNumber
              extended by org.znerd.math.Sum
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable, RoundingModes

public class Sum
extends CompositeNumber

A sum of two real numbers.

Instances of Sum must be obtained by using one of the createInstance() factory methods.

Version:
$Revision: 1.7 $ $Date: 2002/08/16 21:54:40 $
Author:
Ernst de Haan (znerd@FreeBSD.org)
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.znerd.math.RealNumber
MAXIMUM_RADIX
 
Fields inherited from interface org.znerd.math.RoundingModes
ROUND_CEILING, ROUND_DOWN, ROUND_FLOOR, ROUND_UP
 
Constructor Summary
protected Sum(RealNumber a, RealNumber b)
          Constructs a Sum based on the 2 specified operands.
 
Method Summary
protected  int compareToImpl(RealNumber n)
          Compares this number with the specified number, second level.
static Sum createInstance(RealNumber a, RealNumber b)
          Returns a Sum with the specified operands.
 RealNumber getElement(int n)
          Returns the nth operand.
 int getElementCount()
          Counts the number of operands.
 RealNumber[] getElements()
          Returns the operands.
 java.math.BigDecimal toBigDecimal(int precision, int roundingMode)
          Converts the value of this number to a BigDecimal with the specified precision and rounding mode.
 IntegerNumber trunc()
          Rounds to an integer number towards 0.
 
Methods inherited from class org.znerd.math.RealNumber
abs, add, byteValue, compareTo, compareTo, divide, doubleValue, equals, fitsByte, fitsDouble, fitsFloat, fitsInt, fitsLong, fitsShort, floatValue, getSign, intValue, invert, longValue, multiply, negate, pow, powImpl, round, shortValue, subtract, toBigDecimal, toBigInteger, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Sum

protected Sum(RealNumber a,
              RealNumber b)
       throws java.lang.IllegalArgumentException,
              CanNotCompareException
Constructs a Sum based on the 2 specified operands.

Parameters:
a - the first operand for the sum, not null.
b - the second operand for the sum, not null.
Throws:
java.lang.IllegalArgumentException - if a == null || b == null.
CanNotCompareException - if the sign of this sum cannot be determined because the 2 arguments cannot be compared.
Method Detail

createInstance

public static Sum createInstance(RealNumber a,
                                 RealNumber b)
                          throws java.lang.IllegalArgumentException,
                                 CanNotCompareException
Returns a Sum with the specified operands.

Parameters:
a - the first operand, not null.
b - the second operand, not null.
Returns:
the Sum instance, possibly newly constructed.
Throws:
java.lang.IllegalArgumentException - if a == null || b == null.
CanNotCompareException - if the sign of this sum cannot be determined because the 2 arguments cannot be compared.

compareToImpl

protected int compareToImpl(RealNumber n)
                     throws java.lang.IllegalArgumentException,
                            CanNotCompareException
Description copied from class: RealNumber
Compares this number with the specified number, second level.

The implementation of this method in class RealNumber throws a CanNotCompareException. Concrete subclasses are encouraged to improve this behaviour by overriding this method.

Note that this method does not check if n == null. This is already done in RealNumber.compareTo(RealNumber).

Overrides:
compareToImpl in class RealNumber
Parameters:
n - the number to compare to, guaranteed to be not null.
Returns:
-1 if this < n, 0 if this == n, 1 if this > n.
Throws:
CanNotCompareException - if the comparison failed.
java.lang.IllegalArgumentException

toBigDecimal

public java.math.BigDecimal toBigDecimal(int precision,
                                         int roundingMode)
                                  throws java.lang.IllegalArgumentException
Converts the value of this number to a BigDecimal with the specified precision and rounding mode.

Specified by:
toBigDecimal in class RealNumber
Parameters:
precision - the number of digits behind the decimal point.
roundingMode - the rounding mode to use, one of the modes defined in class BigDecimal.
Returns:
a BigDecimal with the rounded value of this.
Throws:
java.lang.IllegalArgumentException - if precision<0 or the rounding mode is not one of the valid rounding modes defined in class BigDecimal.

trunc

public IntegerNumber trunc()
Rounds to an integer number towards 0.

Overrides:
trunc in class RealNumber
Returns:
this number truncated to an integer.

getElements

public RealNumber[] getElements()
Description copied from class: CompositeNumber
Returns the operands.

Specified by:
getElements in class CompositeNumber
Returns:
a new array, containing the operands.

getElementCount

public int getElementCount()
Description copied from class: CompositeNumber
Counts the number of operands.

Specified by:
getElementCount in class CompositeNumber
Returns:
the operand count, >= 0.

getElement

public RealNumber getElement(int n)
                      throws java.lang.IndexOutOfBoundsException
Description copied from class: CompositeNumber
Returns the nth operand.

Specified by:
getElement in class CompositeNumber
Parameters:
n - the index of the operand, >= 0 and < CompositeNumber.getElementCount().
Returns:
the nth operand, not null.
Throws:
java.lang.IndexOutOfBoundsException - if one of the following applies:
  1. n < 0
  2. n >= operandCount


See http://jump-math.sourceforge.net/.