org.apfloat.internal
Class FloatCRTMath

java.lang.Object
  extended byorg.apfloat.internal.FloatCRTMath
All Implemented Interfaces:
FloatModConstants, FloatRadixConstants
Direct Known Subclasses:
FloatCarryCRT

public class FloatCRTMath
extends Object
implements FloatModConstants, FloatRadixConstants

Basic arithmetic for calculating the Chinese Remainder Theorem. Works for the float type.

Version:
1.0
Author:
Mikko Tommila

Field Summary
 
Fields inherited from interface org.apfloat.internal.FloatModConstants
MAX_POWER_OF_TWO_BASE, MAX_POWER_OF_TWO_BITS, MAX_TRANSFORM_LENGTH, MODULUS, PRIMITIVE_ROOT
 
Fields inherited from interface org.apfloat.internal.FloatRadixConstants
BASE, BASE_DIGITS, MAX_EXPONENT, MINIMUM_FOR_DIGITS
 
Constructor Summary
FloatCRTMath(int radix)
          Creates a carry-CRT math using the specified radix.
 
Method Summary
 float add(float[] src, float[] srcDst)
          Adds three words.
 float compare(float[] src1, float[] src2)
          Compares three words.
 float divide(float[] srcDst)
          Divides three words by the base to produce two words.
 void multiply(float[] src, float factor, float[] dst)
          Multiplies two words by one word to produce a result of three words.
 void subtract(float[] src, float[] srcDst)
          Subtracts three words.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FloatCRTMath

public FloatCRTMath(int radix)
Creates a carry-CRT math using the specified radix.

Parameters:
radix - The radix that will be used.
Method Detail

multiply

public final void multiply(float[] src,
                           float factor,
                           float[] dst)
Multiplies two words by one word to produce a result of three words. Most significant word is stored first.

Parameters:
src - Source array, first multiplicand.
factor - Second multiplicand.
dst - Destination array.

compare

public final float compare(float[] src1,
                           float[] src2)
Compares three words. Most significant word is stored first.

Parameters:
src1 - First operand.
src2 - Second operand.
Returns:
Less than zero if src1 < src2, greater than zero if src1 > src2 and zero if src1 == src2.

add

public final float add(float[] src,
                       float[] srcDst)
Adds three words. Most significant word is stored first.

Parameters:
src - First operand.
srcDst - Second operand, and destination of the operation.
Returns:
Overflow carry bit.

subtract

public final void subtract(float[] src,
                           float[] srcDst)
Subtracts three words. Most significant word is stored first.

Parameters:
src - First operand.
srcDst - Second operand, and destination of the operation.

divide

public final float divide(float[] srcDst)
Divides three words by the base to produce two words. Most significant word is stored first.

Parameters:
srcDst - Source and destination of the operation.
Returns:
Remainder of the division.