org.apfloat.internal
Class DoubleCRTMath

java.lang.Object
  extended byorg.apfloat.internal.DoubleCRTMath
All Implemented Interfaces:
DoubleModConstants, DoubleRadixConstants
Direct Known Subclasses:
DoubleCarryCRT

public class DoubleCRTMath
extends java.lang.Object
implements DoubleModConstants, DoubleRadixConstants

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

Version:
1.0
Author:
Mikko Tommila

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

Constructor Detail

DoubleCRTMath

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