ch.javasoft.math
Class BigFractionOperations

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

public class BigFractionOperations
extends AbstractNumberOps<BigFraction>

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


Constructor Summary
BigFractionOperations()
           
 
Method Summary
 BigFraction abs(BigFraction number)
          Returns the absolute value of the given number, i.e.
 BigFraction add(BigFraction numA, BigFraction 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(BigFraction o1, BigFraction o2)
           
 BigFraction divide(BigFraction numA, BigFraction numB)
          Returns the ratio of the two values, i.e.
 BigFraction fromByteArray(byte[] bytes)
          Converts the byte array containing binary data into a new number instance.
static BigFractionOperations instance()
          Returns the singleton instance
 BigFraction invert(BigFraction number)
          Returns the inverted value, i.e.
 boolean isOne(BigFraction number)
          Returns true if this value is numerically equal to one, i.e.
 boolean isZero(BigFraction number)
          Returns true if this value is numerically equal to zero, i.e.
 BigFraction multiply(BigFraction numA, BigFraction numB)
          Returns the product of the two values, i.e.
 BigFraction negate(BigFraction number)
          Returns the negated value, i.e.
 BigFraction[] newArray(int size)
          Create a new array of the underlying number type
 BigFraction[][] newArray(int rows, int cols)
          Create a new 2 dimensional array of the underlying number type
 Class<BigFraction> numberClass()
          The class representing numbers of this number operations instance
 BigFraction one()
          Returns the value representing one
 BigFraction pow(BigFraction numA, BigFraction numB)
          Returns the powered value, i.e.
 BigFraction readFrom(DataInput in)
          Reads binary data from the given data input.
 BigFraction reduce(BigFraction number)
          Converts the number into some reduced form.
 BigFraction[] reduceVector(boolean cloneOnChange, BigFraction... vector)
          Converts a vector into some reduced form.
 int signum(BigFraction number)
          Returns signum of the value, i.e.
 BigFraction subtract(BigFraction numA, BigFraction numB)
          Returns the difference of the two values, i.e.
 byte[] toByteArray(BigFraction number)
          Converts this number to binary data and returns it as a byte array.
 BigFraction valueOf(double value)
          Create an instance of the underlying number type based on the submitted double value
 BigFraction valueOf(long value)
          Create an instance of the underlying number type based on the submitted long integer value
 BigFraction valueOf(Number number)
          Create an instance of the underlying number type based on the submitted number
 BigFraction valueOf(String s)
          Create an instance of the underlying number type based on the given string representation of the number
 void writeTo(BigFraction number, DataOutput out)
          Converts this number to binary data and writes it to the data output.
 BigFraction 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

BigFractionOperations

public BigFractionOperations()
Method Detail

instance

public static BigFractionOperations instance()
Returns the singleton instance

Returns:
the singleton instance

numberClass

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


newArray

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


newArray

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


valueOf

public BigFraction 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 BigFraction valueOf(Number number)
Description copied from interface: NumberOperations
Create an instance of the underlying number type based on the submitted number


valueOf

public BigFraction 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 BigFraction valueOf(double value)
Description copied from interface: NumberOperations
Create an instance of the underlying number type based on the submitted double value


abs

public BigFraction abs(BigFraction 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<BigFraction>
Overrides:
abs in class AbstractNumberOps<BigFraction>

add

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


divide

public BigFraction divide(BigFraction numA,
                          BigFraction 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 BigFraction invert(BigFraction number)
Description copied from interface: NumberOperations
Returns the inverted value, i.e. 1 / number

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

isOne

public boolean isOne(BigFraction 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<BigFraction>
Overrides:
isOne in class AbstractNumberOps<BigFraction>

isZero

public boolean isZero(BigFraction 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<BigFraction>
Overrides:
isZero in class AbstractNumberOps<BigFraction>

multiply

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


negate

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


one

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


subtract

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


zero

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


compare

public int compare(BigFraction o1,
                   BigFraction o2)

reduce

public BigFraction reduce(BigFraction 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 BigFraction[] reduceVector(boolean cloneOnChange,
                                  BigFraction... vector)
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.

Note also that if the vector is NOT reduced, i.e. the current instance is returned, the individual entries might still be reducible. Otherwise, also individual positions are reduced.

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(BigFraction number)
Description copied from interface: NumberOperations
Returns signum of the value, i.e. -1, 0, 1 for negative, zero or positive values


pow

public BigFraction pow(BigFraction numA,
                       BigFraction 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(BigFraction 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(BigFraction 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 BigFraction 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 BigFraction 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