public class AbelianFunction extends Object
Let a,b,c,d ∈ Cg
with
a+b=c+d mod 2πiZg
, then
θ(z+a|B)·θ(z+b|B)
f(z) =
θ(z+c|B)·θ(z+d|B)
defines an Abelian function, which is represented by this class.
To evaluate it you only need to envoke applyTo(ComplexVector)
or
#applyTo(ComplexVector,Field.Complex)
. Below the implementation of the last:
public void applyTo( ComplexVector z, Field.Complex result ) { zPlusA.assignPlus( z, a ); zPlusB.assignPlus( z, b ); zPlusC.assignPlus( z, c ); zPlusD.assignPlus( z, d ); theta.theta( zPlusA, factorOfZPlusA, thetaSumOfZPlusA ); theta.theta( zPlusB, factorOfZPlusB, thetaSumOfZPlusB ); theta.theta( zPlusC, factorOfZPlusC, thetaSumOfZPlusC ); theta.theta( zPlusD, factorOfZPlusD, thetaSumOfZPlusD ); factor.assign( factorOfZPlusA ); factor.assignPlus( factorOfZPlusB ); factor.assignMinus( factorOfZPlusC ); factor.assignMinus( factorOfZPlusD ); expOfFactor.assignExp( factor ); result.assign( expOfFactor ); result.assignTimes( thetaSumOfZPlusA ); result.assignTimes( thetaSumOfZPlusB ); result.assignDivide( thetaSumOfZPlusC ); result.assignDivide( thetaSumOfZPlusD ); }
AbelianFunction
is executable. Its main(String[])
performs
a periodicity test by envoking
testPeriodicity(ComplexVector,boolean)
on a 100 different random arguments.
Theta
Constructor and Description |
---|
AbelianFunction(de.jtem.blas.ComplexMatrix periodMatrix,
de.jtem.blas.ComplexVector a,
de.jtem.blas.ComplexVector b,
de.jtem.blas.ComplexVector c,
de.jtem.blas.ComplexVector d,
double tol)
Creates Abelean function with prescribed
periodMatrix ,
vectors a,b,c,d and, error tolerance tol . |
Modifier and Type | Method and Description |
---|---|
de.jtem.mfc.field.Complex |
applyTo(de.jtem.blas.ComplexVector z)
Applies Abelian function to
z . |
void |
applyTo(de.jtem.blas.ComplexVector z,
de.jtem.mfc.field.Complex result)
Applies Abelian function to
z . |
double |
getErrorOfLastEvaluation()
Returns error of last Evaluation.
|
static void |
main(String[] argv)
Performs a periodicity test for a 2-dimensional example by envoking
testPeriodicity(ComplexVector,boolean) on a 100 different random arguments. |
void |
testPeriodicity(de.jtem.blas.ComplexVector Z,
boolean verbose)
Performs periodicity test.
|
public AbelianFunction(de.jtem.blas.ComplexMatrix periodMatrix, de.jtem.blas.ComplexVector a, de.jtem.blas.ComplexVector b, de.jtem.blas.ComplexVector c, de.jtem.blas.ComplexVector d, double tol)
periodMatrix
,
vectors a,b,c,d
and, error tolerance tol
.
The vectors a,b,c,d e Cg
have to fill:
a+b=c+d mod 2πiZg
Unfortunately tol
is only the error tolerance for the four
individual theta sums. Use getErrorOfLastEvaluation()
to recieve
an error estimate for the Abelian function, which depends on the argument.
See the description of Theta
for a more detailed discussion.
periodMatrix
- symmetric complex matrix with negative definite real parta
- vector compatible with periodMatrix
b
- vector compatible with periodMatrix
c
- vector compatible with periodMatrix
d
- vector compatible with periodMatrix
tol
- positive numberpublic de.jtem.mfc.field.Complex applyTo(de.jtem.blas.ComplexVector z)
z
.z
- agrument vectorz
public void applyTo(de.jtem.blas.ComplexVector z, de.jtem.mfc.field.Complex result)
z
.z
- agrument vectorresult
- value of Abelian function at z
public double getErrorOfLastEvaluation()
public static void main(String[] argv)
testPeriodicity(ComplexVector,boolean)
on a 100 different random arguments.argv
- has no effectpublic void testPeriodicity(de.jtem.blas.ComplexVector Z, boolean verbose)
2g
vectors of the basis
of the lattice to the argument Z
and checks if all these
results coincide.Z
- argument vectorverbose
- controles wheter the check is done verbose or silent.