org.apfloat.internal
Class LongCRTMath

java.lang.Object
  extended by org.apfloat.internal.LongBaseMath
      extended by org.apfloat.internal.LongCRTMath
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
LongCarryCRT

public class LongCRTMath
extends LongBaseMath

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

Version:
1.6
Author:
Mikko Tommila
See Also:
Serialized Form

Constructor Summary
LongCRTMath(int radix)
          Creates a carry-CRT math using the specified radix.
 
Method Summary
 long add(long[] src, long[] srcDst)
          Adds three words.
 long compare(long[] src1, long[] src2)
          Compares three words.
 long divide(long[] srcDst)
          Divides three words by the base to produce two words.
 void multiply(long[] src, long factor, long[] dst)
          Multiplies two words by one word to produce a result of three words.
 void subtract(long[] src, long[] srcDst)
          Subtracts three words.
 
Methods inherited from class org.apfloat.internal.LongBaseMath
baseAdd, baseDivide, baseMultiplyAdd, baseSubtract
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LongCRTMath

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