Package org.hipparchus.complex
Class RootsOfUnity
- java.lang.Object
-
- org.hipparchus.complex.RootsOfUnity
-
- All Implemented Interfaces:
Serializable
public class RootsOfUnity extends Object implements Serializable
A helper class for the computation and caching of then
-th roots of unity.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description RootsOfUnity()
Build an engine for computing then
-th roots of unity.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
computeRoots(int n)
Computes then
-th roots of unity.double
getImaginary(int k)
Get the imaginary part of thek
-thn
-th root of unity.int
getNumberOfRoots()
Returns the number of roots of unity currently stored.double
getReal(int k)
Get the real part of thek
-thn
-th root of unity.boolean
isCounterClockWise()
-
-
-
Method Detail
-
isCounterClockWise
public boolean isCounterClockWise() throws MathIllegalStateException
Returnstrue
ifcomputeRoots(int)
was called with a positive value of its argumentn
. Iftrue
, then counter-clockwise ordering of the roots of unity should be used.- Returns:
true
if the roots of unity are stored in counter-clockwise order- Throws:
MathIllegalStateException
- if no roots of unity have been computed yet
-
computeRoots
public void computeRoots(int n) throws MathIllegalArgumentException
Computes then
-th roots of unity.The roots are stored in
omega[]
, such thatomega[k] = w ^ k
, wherek = 0, ..., n - 1
,w = exp(2 * pi * i / n)
andi = sqrt(-1)
.Note that
n
can be positive of negativeabs(n)
is always the number of roots of unity.- If
n > 0
, then the roots are stored in counter-clockwise order. - If
n < 0
, then the roots are stored in clockwise order.
- Parameters:
n
- the (signed) number of roots of unity to be computed- Throws:
MathIllegalArgumentException
- ifn = 0
-
getReal
public double getReal(int k) throws MathIllegalArgumentException, MathIllegalStateException
Get the real part of thek
-thn
-th root of unity.- Parameters:
k
- index of then
-th root of unity- Returns:
- real part of the
k
-thn
-th root of unity - Throws:
MathIllegalStateException
- if no roots of unity have been computed yetMathIllegalArgumentException
- ifk
is out of range
-
getImaginary
public double getImaginary(int k) throws MathIllegalArgumentException, MathIllegalStateException
Get the imaginary part of thek
-thn
-th root of unity.- Parameters:
k
- index of then
-th root of unity- Returns:
- imaginary part of the
k
-thn
-th root of unity - Throws:
MathIllegalStateException
- if no roots of unity have been computed yetMathIllegalArgumentException
- ifk
is out of range
-
getNumberOfRoots
public int getNumberOfRoots()
Returns the number of roots of unity currently stored.If
computeRoots(int)
was called withn
, then this method returnsabs(n)
. If no roots of unity have been computed yet, this method returns 0.- Returns:
- the number of roots of unity currently stored
-
-