org.apfloat.internal
Class IntCRTMath

java.lang.Object
  |
  +--org.apfloat.internal.IntCRTMath
All Implemented Interfaces:
IntModConstants, IntRadixConstants
Direct Known Subclasses:
IntCarryCRT

public class IntCRTMath
extends java.lang.Object
implements IntModConstants, IntRadixConstants

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


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

Constructor Detail

IntCRTMath

public IntCRTMath(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(int[] src,
                           int factor,
                           int[] 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 int compare(int[] src1,
                         int[] 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 int add(int[] src,
                     int[] 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(int[] src,
                           int[] 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 int divide(int[] 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.