Package org.apache.commons.math3.complex
Class RootsOfUnity
- java.lang.Object
-
- org.apache.commons.math3.complex.RootsOfUnity
-
- All Implemented Interfaces:
java.io.Serializable
public class RootsOfUnity extends java.lang.Object implements java.io.Serializable
A helper class for the computation and caching of then
-th roots of unity.- Since:
- 3.0
- 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 ZeroException
Computes the
n
-th roots of unity. The roots are stored inomega[]
, 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:
ZeroException
- ifn = 0
-
getReal
public double getReal(int k) throws MathIllegalStateException, MathIllegalArgumentException
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 MathIllegalStateException, OutOfRangeException
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 yetOutOfRangeException
- ifk
is out of range
-
getNumberOfRoots
public int getNumberOfRoots()
Returns the number of roots of unity currently stored. IfcomputeRoots(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
-
-