Class LongCRTMath

  • All Implemented Interfaces:
    java.io.Serializable
    Direct Known Subclasses:
    LongCarryCRTStepStrategy

    public class LongCRTMath
    extends LongBaseMath
    Basic arithmetic for calculating the Chinese Remainder Theorem. Works for the long type.
    Version:
    1.6
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      LongCRTMath​(int radix)
      Creates a carry-CRT math using the specified radix.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • INVERSE_MAX_POWER_OF_TWO_BASE

        private static final double INVERSE_MAX_POWER_OF_TWO_BASE
        See Also:
        Constant Field Values
      • base

        private long base
      • inverseBase

        private double inverseBase
    • 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.