## Class LongCRTMath

• All Implemented Interfaces:
`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
Author:
Mikko Tommila
Serialized Form
• ### Constructor Summary

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

Modifier and Type Method Description
`long` ```add​(long[] src, long[] srcDst)```
`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`.

```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.