ch.javasoft.math
Class BigIntegerOperations

java.lang.Object
  extended by ch.javasoft.math.AbstractNumberOps<BigInteger>
      extended by ch.javasoft.math.BigIntegerOperations
All Implemented Interfaces:
NumberOperations<BigInteger>, Comparator<BigInteger>

public class BigIntegerOperations
extends AbstractNumberOps<BigInteger>

Number operations for BigInteger numbers. A singleton instance exists for this class.


Constructor Summary
BigIntegerOperations()
           
 
Method Summary
 BigInteger abs(BigInteger number)
          Returns the absolute value of the given number, i.e.
 BigInteger add(BigInteger numA, BigInteger numB)
          Returns the sum of the two values, i.e.
 int byteLength()
          Returns the byte array length if NumberOperations.toByteArray(Number) is used and if this size is fixed, and -1 if the size may vary depending on the number instance
 int compare(BigInteger o1, BigInteger o2)
           
 BigInteger divide(BigInteger numA, BigInteger numB)
          Returns the ratio of the two values, i.e.
 BigInteger fromByteArray(byte[] bytes)
          Converts the byte array containing binary data into a new number instance.
static BigIntegerOperations instance()
          Returns the singleton instance
 BigInteger invert(BigInteger number)
          Returns the inverted value, i.e.
 boolean isOne(BigInteger number)
          Returns true if this value is numerically equal to one, i.e.
 boolean isZero(BigInteger number)
          Returns true if this value is numerically equal to zero, i.e.
 BigInteger multiply(BigInteger numA, BigInteger numB)
          Returns the product of the two values, i.e.
 BigInteger negate(BigInteger number)
          Returns the negated value, i.e.
 BigInteger[] newArray(int size)
          Create a new array of the underlying number type
 BigInteger[][] newArray(int rows, int cols)
          Create a new 2 dimensional array of the underlying number type
 Class<BigInteger> numberClass()
          The class representing numbers of this number operations instance
 BigInteger one()
          Returns the value representing one
 BigInteger pow(BigInteger numA, BigInteger numB)
          Returns the powered value, i.e.
 BigInteger readFrom(DataInput in)
          Reads binary data from the given data input.
 BigInteger reduce(BigInteger number)
          Converts the number into some reduced form.
 BigInteger[] reduceVector(boolean cloneOnChange, BigInteger... vector)
          Converts a vector into some reduced form.
 int signum(BigInteger number)
          Returns signum of the value, i.e.
 BigInteger subtract(BigInteger numA, BigInteger numB)
          Returns the difference of the two values, i.e.
 byte[] toByteArray(BigInteger number)
          Converts this number to binary data and returns it as a byte array.
 BigInteger valueOf(double value)
          Create an instance of the underlying number type based on the submitted double value
 BigInteger valueOf(long value)
          Create an instance of the underlying number type based on the submitted long integer value
 BigInteger valueOf(Number number)
          Create an instance of the underlying number type based on the submitted number
 BigInteger valueOf(String s)
          Create an instance of the underlying number type based on the given string representation of the number
 void writeTo(BigInteger number, DataOutput out)
          Converts this number to binary data and writes it to the data output.
 BigInteger zero()
          Returns the value representing zero
 
Methods inherited from class ch.javasoft.math.AbstractNumberOps
isNegative, isNonNegative, isNonPositive, isNonZero, isPositive, max, max, min, min
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Constructor Detail

BigIntegerOperations

public BigIntegerOperations()
Method Detail

instance

public static BigIntegerOperations instance()
Returns the singleton instance

Returns:
the singleton instance

numberClass

public Class<BigInteger> numberClass()
Description copied from interface: NumberOperations
The class representing numbers of this number operations instance


newArray

public BigInteger[] newArray(int size)
Description copied from interface: NumberOperations
Create a new array of the underlying number type


newArray

public BigInteger[][] newArray(int rows,
                               int cols)
Description copied from interface: NumberOperations
Create a new 2 dimensional array of the underlying number type


valueOf

public BigInteger valueOf(String s)
Description copied from interface: NumberOperations
Create an instance of the underlying number type based on the given string representation of the number


valueOf

public BigInteger valueOf(Number number)
Description copied from interface: NumberOperations
Create an instance of the underlying number type based on the submitted number


valueOf

public BigInteger valueOf(long value)
Description copied from interface: NumberOperations
Create an instance of the underlying number type based on the submitted long integer value


valueOf

public BigInteger valueOf(double value)
Description copied from interface: NumberOperations
Create an instance of the underlying number type based on the submitted double value


abs

public BigInteger abs(BigInteger number)
Description copied from interface: NumberOperations
Returns the absolute value of the given number, i.e. a non-negative value abs(number)

Specified by:
abs in interface NumberOperations<BigInteger>
Overrides:
abs in class AbstractNumberOps<BigInteger>

add

public BigInteger add(BigInteger numA,
                      BigInteger numB)
Description copied from interface: NumberOperations
Returns the sum of the two values, i.e. numA + numB


divide

public BigInteger divide(BigInteger numA,
                         BigInteger numB)
Description copied from interface: NumberOperations
Returns the ratio of the two values, i.e. numA / numB.

For integer types, an integer division is performed, ignoring possible remainders


invert

public BigInteger invert(BigInteger number)
Description copied from interface: NumberOperations
Returns the inverted value, i.e. 1 / number

Specified by:
invert in interface NumberOperations<BigInteger>
Overrides:
invert in class AbstractNumberOps<BigInteger>

isOne

public boolean isOne(BigInteger number)
Description copied from interface: NumberOperations
Returns true if this value is numerically equal to one, i.e. number == 1

Specified by:
isOne in interface NumberOperations<BigInteger>
Overrides:
isOne in class AbstractNumberOps<BigInteger>

isZero

public boolean isZero(BigInteger number)
Description copied from interface: NumberOperations
Returns true if this value is numerically equal to zero, i.e. number == 0

Specified by:
isZero in interface NumberOperations<BigInteger>
Overrides:
isZero in class AbstractNumberOps<BigInteger>

multiply

public BigInteger multiply(BigInteger numA,
                           BigInteger numB)
Description copied from interface: NumberOperations
Returns the product of the two values, i.e. numA * numB


negate

public BigInteger negate(BigInteger number)
Description copied from interface: NumberOperations
Returns the negated value, i.e. -number


one

public BigInteger one()
Description copied from interface: NumberOperations
Returns the value representing one


subtract

public BigInteger subtract(BigInteger numA,
                           BigInteger numB)
Description copied from interface: NumberOperations
Returns the difference of the two values, i.e. numA - numB


zero

public BigInteger zero()
Description copied from interface: NumberOperations
Returns the value representing zero


compare

public int compare(BigInteger o1,
                   BigInteger o2)

reduce

public BigInteger reduce(BigInteger number)
Description copied from interface: NumberOperations
Converts the number into some reduced form. This can for instance mean reduction for fraction numbers. If no reduction can be made, the number is returned unchanged.


reduceVector

public BigInteger[] reduceVector(boolean cloneOnChange,
                                 BigInteger... vector)
Description copied from interface: NumberOperations
Converts a vector into some reduced form. For integer or fraction number vectors, this can for instance mean that the vector is shortened by the greatest common divisor of all vector components.

Note that the vector length might change by this operation. If only individual components of the vector should be reduced, which is not affecting the vector's length, reduce each number separately.

Parameters:
cloneOnChange - if a reduction can be made, the array is cloned and the original array is not changed. If no reduction can be made, or if cloneOnChange is false, the original array will be returned, unmodified in the former case, and with reduced values in the latter case.
vector - the vector to reduce

signum

public int signum(BigInteger number)
Description copied from interface: NumberOperations
Returns signum of the value, i.e. -1, 0, 1 for negative, zero or positive values


pow

public BigInteger pow(BigInteger numA,
                      BigInteger numB)
Description copied from interface: NumberOperations
Returns the powered value, i.e. numAnumB. Negative exponents are allowed, also for integer types, without causing an exception. E.g. 3^-1 yields 0.


toByteArray

public byte[] toByteArray(BigInteger number)
Description copied from interface: NumberOperations
Converts this number to binary data and returns it as a byte array. Back-conversion is possible using the NumberOperations.fromByteArray(byte[]) method.


writeTo

public void writeTo(BigInteger number,
                    DataOutput out)
             throws IOException
Description copied from interface: NumberOperations
Converts this number to binary data and writes it to the data output. The counterpart of this method reading binary data is NumberOperations.readFrom(DataInput).

Throws:
IOException

fromByteArray

public BigInteger fromByteArray(byte[] bytes)
Description copied from interface: NumberOperations
Converts the byte array containing binary data into a new number instance. Forward-conversion is possible using the NumberOperations.toByteArray(Number) method.


readFrom

public BigInteger readFrom(DataInput in)
                    throws IOException
Description copied from interface: NumberOperations
Reads binary data from the given data input. Binary data is converted and a new number instance is returned. The counterpart of this method writing binary data is NumberOperations.writeTo(Number, DataOutput)

Throws:
IOException

byteLength

public int byteLength()
Description copied from interface: NumberOperations
Returns the byte array length if NumberOperations.toByteArray(Number) is used and if this size is fixed, and -1 if the size may vary depending on the number instance