# Class LongModMath

Direct Known Subclasses:
`LongFactor3NTTStepStrategy`, `LongNTTConvolutionStepStrategy`, `LongTableFNT`, `LongWTables`

public class LongModMath extends LongElementaryModMath
Modulo arithmetic functions for `long` data.
Version:
1.0
Author:
Mikko Tommila
• ## Constructor Summary

Constructors
Constructor
Description
`LongModMath()`
Default constructor.
• ## Method Summary

Modifier and Type
Method
Description
`final long[]`
```createWTable(long w, int n)```
Create a table of powers of n:th root of unity.
`long`
```getForwardNthRoot(long primitiveRoot, long n)```
Get forward n:th root of unity.
`long`
```getInverseNthRoot(long primitiveRoot, long n)```
Get inverse n:th root of unity.
`final long`
```modDivide(long a, long b)```
Modular division.
`final long`
`modInverse(long a)`
Modular inverse, that is `1 / a`.
`final long`
```modPow(long a, long n)```
Modular power.
`final long`
`negate(long a)`
Modular negation.

### Methods inherited from class org.apfloat.internal.LongElementaryModMath

`getModulus, modAdd, modMultiply, modSubtract, setModulus`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ## Constructor Details

• ### LongModMath

public LongModMath()
Default constructor.
• ## Method Details

• ### createWTable

public final long[] createWTable(long w, int n)
Create a table of powers of n:th root of unity.
Parameters:
`w` - The n:th root of unity modulo the current modulus.
`n` - The table length (= transform length).
Returns:
Table of `table[i]=wi mod m`, i = 0, ..., n-1.
• ### getForwardNthRoot

public long getForwardNthRoot(long primitiveRoot, long n)
Get forward n:th root of unity. This is `w`.

Assumes that the modulus is prime.

Parameters:
`primitiveRoot` - Primitive root of the modulus.
`n` - The transform length.
Returns:
Forward n:th root of unity.
• ### getInverseNthRoot

public long getInverseNthRoot(long primitiveRoot, long n)
Get inverse n:th root of unity. This is `w-1`.

Assumes that the modulus is prime.

Parameters:
`primitiveRoot` - Primitive root of the modulus.
`n` - The transform length.
Returns:
Inverse n:th root of unity.
• ### modInverse

public final long modInverse(long a)
Modular inverse, that is `1 / a`. Assumes that the modulus is prime.
Parameters:
`a` - The operand.
Returns:
`a-1 mod m`.
• ### modDivide

public final long modDivide(long a, long b)
Modular division. Assumes that the modulus is prime.
Parameters:
`a` - The dividend.
`b` - The divisor.
Returns:
`a*b-1 mod m`.
• ### negate

public final long negate(long a)
Modular negation.
Parameters:
`a` - The argument.
Returns:
`-a mod m`.
• ### modPow

public final long modPow(long a, long n)
Modular power. Assumes that the modulus is prime.
Parameters:
`a` - The base.
`n` - The exponent.
Returns:
`an mod m`.