org.apfloat.internal
Class DoubleCRTMath

java.lang.Object
  extended by org.apfloat.internal.DoubleBaseMath
      extended by org.apfloat.internal.DoubleCRTMath
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
DoubleCarryCRT

public class DoubleCRTMath
extends DoubleBaseMath

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

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

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 org.apfloat.internal.DoubleBaseMath
baseAdd, baseDivide, baseMultiplyAdd, baseSubtract
 
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.