Comments (44)
Ok ,Thank you very much, now jean's comment clarified many things that i misunderstood from his slides.
May be that good because it motivated me to test it and learn some Flint.
Theta function has many many applications in physics. In classical integrable models (KdV, KP, Genral Relativity),
to quantum groups and kashiwara crystals, to conformal field theory (Verlinde Formula) to different application
in string theory. It is a very huge subject.
#NON-LINEAR EQUATIONS OF KORTEWEG-DE VRIES TYPE, FINITE-ZONE LINEAR
OPERATORS, AND ABELIAN VARIETIES
B. A. Dubrovin, V. B. Matveev, and S. P. Novikov
#Theta functions and non-linear equations
Dubrovin
#Theta function identities in a series of solvable lattice models
ATSUO KUNIBA in theta Functions bowdoin 1987
#Verlinde E. Fusion rules and modular transformations in 2D conformal field theories (Nucl.Phys.B300, 1988)(T).
and the work of the french Beauville Debarre ....
#articles about SuperRiemann and strings are too much
Theta Functions, Modular Invariance, and Strings,
Luis Alvarez-Gaume, Gregory Moore, and Cumrun Vafa
not to mention the different work of enolski, emma previato, matsutani .......
So welcome, I thought you have found a new general addition derived from
the work of the french school that is almost largely unknown outside.
Physics indicates that is still a lot to learn about Theta Function (200 years are not enogh).
It is a very big subject and the hope is computer clarify how to go forward.
Just i am interested in testing it, you work as much as you like, and I like to test
how it works for higher genus higher than 8 and how far we can push on a laptop
to make available for every body.
The two thetas that i used initially,
1- abelfunctions the python code cswiercz and gradyrw
with others students of Deconinck
https://github.com/abelfunctions/abelfunctions
(first code by Deconinck (student of segur) and then modified by van Hoeij(student of Lenstra I think)
gave the first implementation in maple. (around 1995) you can find it in van Hoeij homepage in Florida.
also they build the first Maple Algebraic Curve package.
Then joined forces with the Berlin Group into
COMPUTING RIEMANN THETA FUNCTIONS
BERNARD DECONINCK, MATTHIAS HEIL, ALEXANDER BOBENKO,
MARK VAN HOEIJ, AND MARCUS SCHMIES which of course goes beyond
MARK VAN HOEIJ -> is the source of the modern algorithm in his Ph.D. around 199?
and you can find in the book
Computational Approach to Riemann Surfaces
Alexander I. Bobenko · Christian Klein springer lnm 2013 (published in 2011).
2- the bruin code
https://github.com/nbruin/RiemannTheta
ok. The best way is to activate my account put some code and some notebooks
to explain how i make faster for g=7 and g=8. Then
higher g up to 11 for single point low precession/multithreading.
Since it is based on their code it agrees with them but faster.
I have some gpu but it is not fast optimizing cuda is not generic.
BY THE WAY, YOU HAVE SEEN UP THE C-CODE UP in the 9 reply .
We are not competing I am more interested in the application
but first for sure a fast correct theta is needed no problem for me
if it turned to be your. I shall be happy to use it.
now i should return to fredrik-johansson
to tell him what i nedd so i can make more tests. Not just for Z[x] but more general.
Best wishes and please latter on put more "commented" code.
from flint.
Very Good, Thank you:
Now I understand, the origin of the problem, it is in copying/parsing. <<<<<
The hyperelliptic case is already working above.
So, that explains almost everything. And proves how flint-python is important.
Please make all flint available in flint-python.
from flint.
Those functions are not exposed by python-flint yet. Someone would have to add the code to call them.
from flint.
How to do it?
I know c, python and cython. I know what is ctype.
I know how to call c library from python BUT i don't know how to call
acb - type and so on.
How can I do it.
What file (pyx) should i read and follows.
Thank you for your help
Khaled/Heliopolis/Cairo.
PS: is it implemeted in Julia/Oscar?!
from flint.
Look at e.g. src/flint/types/acb.pyx
.
from flint.
By the way, there are some problems. Untill now, there is no official publication
for their work. I spent the last few days reading their code.
And there are some problems. Starting with genus 7, it becomes very slow
even for low prec=32 !!!!!!!
My theta is faster!!!!
after build try this one
build/acb_theta/profile/p-all 8 2 2
good luck
from flint.
By the way, there are some problems. Untill now, there is no official publication for their work. I spent the last few days reading their code. And there are some problems. Starting with genus 7, it becomes very slow even for low prec=32 !!!!!!!
My theta is faster!!!!
after build try this one build/acb_theta/profile/p-all 8 2 2 good luck
Maybe @j-kieffer can address this.
from flint.
Hi, fredrik-johansson
Thank you for all what you are doing.
We need multithreading. OMP/CUDA/OpecCL/ DASK/VAEX
Those "Data Scientists" can burn their machine better than Mathematicians.
Noway!!!
Best Wishes/from Egypt.
from flint.
OK, I am doing integrable models, classical and quantum;
The little summary is the following:
a) The name naive is not suitable and might be insulting for the soliton community.
The subject started with
Three-Phase Solutions of the Kadomtsev–Petviashvili Equation
By B. A. Dubrovin, Ron Flickinger, and Harvey Segur
as an answer to Novikov challenge for making the finite gap effective.
But I understand the name naive is not due to jean. He just used it.
Please reconsider may Ellipsoidal Method is better.
b) for solitons applications, speed matters more than precession.
While in Number Theory, like Galois Rep. precession matters more than higher genus.
i.e this new theta function is more suitable for Number theory.
c) May be it is doing better than anything else up to genus 7. Very Good.
But starting from g>=8, it becomes slow and problamitic.
d) It can become faster by multithreading or by machine precession.
It is clear that the ellipsoid method has many hidden symmetries not fully used.
How good it can be?!
e) for testing; It might be better to use it with
https://github.com/pascalmolin/hcperiods
both of them in flint/arb i.e. they can be easily used together.
f) may be it is not a bad idea to initialize the curve seperatly and
then compute the theta. Two seperate steps. I used this approach
to make the theta faster and less RAM so more suitable for high
genus up to 11. Not Bad, but low precession. Now, I know a little of
flint so nice but hard to use!!!
I understand that the new method is based upon a new duplication formula not known
for solitons people. It is always nice to learn something new about this very old
and yet unexplored subject and the interaction between different point of view
is always fruitfull.
I shall play and read more about but the code is very clean, I mean no comments
at all which make it hard with flint with no yet at least a draft preprint.
I have just seen a slide of may 2024,i think. and some few materials of Dupont about the g=2 case.
Thank you,
Khaled.
from flint.
This a direct test prog with
https://github.com/pascalmolin/hcperiods
just rename his old period.c and put this one then make example
Now:
./build/example/periods -m 2 --pol "x^5 - x" --gp --prec 51 --trim
[0.500000000000000 + 0.707106781186547 * I, 0.500000000000000 + 1.43118074899876e-16 * I;0.500000000000000 -8.14388297467120e-17 * I, -0.500000000000000 + 0.707106781186548 * I]
genus: 2, lat pts: 16
RM again
[(0.50000 + 0.70711j) +/- (9.92e-15, 8.22e-15j), (0.50000 + 1.4312e-16j) +/- (1.71e-14, 1.60e-14j)]
[(0.50000 - 8.1439e-17j) +/- (7.76e-15, 5.49e-15j), (-0.50000 + 0.70711j) +/- (1.19e-14, 1.26e-14j)]
the 16 thetas
(0.9535055293740715143258058 - 7.163312366778429723297750e-17j) +/- (8.03e-13, 8.32e-13j), (1.047601377227006302916834 + 0.4339306984081592322155529j) +/- (1.07e-12, 1.06e-12j), (1.047601377227006302916834 - 0.4339306984081590101709480j) +/- (4.34e-13, 5.06e-13j), (0.9535055293740715143258058 + 1.477383768221679212551015e-16j) +/- (7.88e-13, 8.16e-13j), (1.047601377227006302916834 - 0.4339306984081585660817382j) +/- (7.66e-13, 8.38e-13j), (0 + 0j) +/- (1.70e-15, 1.70e-15j), (1.047601377227006302916834 - 0.4339306984081590101709480j) +/- (6.28e-13, 7.00e-13j), (0 + 0j) +/- (1.70e-15, 1.70e-15j), (1.047601377227005414738414 + 0.4339306984081583440371332j) +/- (6.78e-13, 6.76e-13j), (1.047601377227006302916834 + 0.4339306984081590101709480j) +/- (8.75e-13, 8.73e-13j), (0 + 0j) +/- (1.58e-15, 1.58e-15j), (0 + 0j) +/- (1.58e-15, 1.58e-15j), (0.9535055293740715143258058 - 9.574403265361223883819822e-17j) +/- (8.48e-13, 8.47e-13j), (0 + 0j) +/- (1.58e-15, 1.58e-15j), (0 + 0j) +/- (1.58e-15, 1.58e-15j), (4.418871776029631934277539e-16 - 0.9535055293740710702365959j) +/- (1.18e-12, 1.18e-12j)
I think it should work with superelliptic curves.
May be I should clean a little bit e.g. count vanishing odd/even thetas seperately and so on (new options)
and clean the output a little bit. Sorry, my first ever flint prog. Not bad a Riemann Theta.
Of course in principle you should be able to make good use of hcperiods for different testing and timing.
Good luck; may be I should return now to my original cython problem.
from flint.
A related issue
Riemann Matrix just two lines in Sage #38204
from flint.
I mentioned up a problem with g=8.
Here a g=4 problem
./build/example/periods -m 3 --pol "16x^5 + 4x^3 - x" --gp --prec 51 --trim
[-0.380859590351682 + 0.703328535058023 * I, 0.324882543498818 + 0.211048804200609 * I, -0.400939652514834 -0.0436603740190401 * I, 0.0813294166090990 + 0.184527055735936 * I;0.324882543372474 + 0.211048804186851 * I, -0.369916911461931 + 0.645858291358531 * I, -0.459335291644194 + 0.0922635279842636 * I, -0.345214897550377 + 0.175832133713237 * I;-0.400939652514834 -0.0436603740190401 * I, -0.459335291746707 + 0.0922635277516721 * I, 0.325317666436396 + 0.738108222943743 * I, 0.238280819296636 -0.325393737452831 * I;0.0813294166090990 + 0.184527055735936 * I, -0.345214897625464 + 0.175832133815775 * I, 0.238280819296636 -0.325393737452831 * I, -0.700469826257417 + 0.844195216774919 * I]
genus: 4, lat pts: 256
RM again
[(-0.38086 + 0.70333j) +/- (7.20e-14, 7.22e-14j), (0.32488 + 0.21105j) +/- (1.18e-13, 1.18e-13j), (-0.40094 - 0.043660j) +/- (1.44e-13, 1.44e-13j), (0.081329 + 0.18453j) +/- (1.75e-13, 1.76e-13j)]
[(0.32488 + 0.21105j) +/- (1.21e-13, 1.21e-13j), (-0.36992 + 0.64586j) +/- (1.94e-13, 1.94e-13j), (-0.45934 + 0.092264j) +/- (2.36e-13, 2.36e-13j), (-0.34521 + 0.17583j) +/- (2.94e-13, 2.94e-13j)]
[(-0.40094 - 0.043660j) +/- (5.90e-14, 5.91e-14j), (-0.45934 + 0.092264j) +/- (9.93e-14, 9.92e-14j), (0.32532 + 0.73811j) +/- (1.21e-13, 1.21e-13j), (0.23828 - 0.32539j) +/- (1.45e-13, 1.46e-13j)]
[(0.081329 + 0.18453j) +/- (3.52e-14, 3.53e-14j), (-0.34521 + 0.17583j) +/- (6.00e-14, 5.98e-14j), (0.23828 - 0.32539j) +/- (6.93e-14, 6.95e-14j), (-0.70047 + 0.84420j) +/- (9.13e-14, 9.23e-14j)]
the 256 thetas
(nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj)
You can find more. I shall try to find some g = 2 or 3.
Please share with us your "full commented" code i know the python code/abelfunctions
and the bruin sage code. So i can test them together.
from flint.
Here a genus 3 curve that does not work
./build/example/periods -m 3 --bern 4 --gp
[-0.50000000000000000000000000000000000000 + 0.86602540378443864676372317075293618347 * I, 0.42430111895789252977610827256957797156 + 2.0098157352835643008099884830428620600e-40 * I, -0.21215055947894626488805413628478898578 + 0.36745554787169801370570640951932810936 * I;0.42430111895789252977609835736325599131 -1.0865337926038956688202882359080577550e-40 * I, 6.3105444429574292053527613662310872616e-40 + 0.96334979959905850804688921696809410995 * I, 0.59001571977445983376662301792102735549 -0.48167489979952925402344460848404705497 * I;-0.21215055947894626488804917868162799566 + 0.36745554787169801370569782269876951039 * I, 0.59001571977445983376663293312734933574 -0.48167489979952925402344460848404705497 * I, -0.090015719774459833766627975524188345618 + 1.1192615997283054201516827944869867482 * I]
genus: 3, lat pts: 64
RM again
[(-0.50000 + 0.86603j) +/- (4.88e-36, 4.88e-36j), (0.42430 + 2.0098e-40j) +/- (9.40e-36, 9.40e-36j), (-0.21215 + 0.36746j) +/- (1.09e-35, 1.09e-35j)]
[(0.42430 - 1.0865e-40j) +/- (4.42e-36, 4.43e-36j), (6.3105e-40 + 0.96335j) +/- (8.48e-36, 8.46e-36j), (0.59002 - 0.48167j) +/- (9.63e-36, 9.65e-36j)]
[(-0.21215 + 0.36746j) +/- (1.65e-36, 1.65e-36j), (0.59002 - 0.48167j) +/- (3.47e-36, 3.47e-36j), (-0.090016 + 1.1193j) +/- (4.03e-36, 4.03e-36j)]
the 64 thetas
(nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj), (nan + nanj) +/- (+inf, +infj)
from flint.
By the way it seems that hcperiods works only for Z[x] not C[x] or even Q[x]!
I should take a deeper inside-look
Github is Amazing World full of surprises!
from flint.
I transferred this issue to flint since it now concerns problems with the implementation.
from flint.
As you wish, I hope jean and naom are not going to shot me. We are jut Truth Seekers
Ps: I am completly new for these github, how i can contact pascalmolin
/
hcperiods or christianneurohr
/
hcperiods Their arb/code doesn't work over C[x] or even Q[x].
**I don't like to email people about problems with their code.
from flint.
If @pascalmolin and @j-kieffer don't reply here, you can always find their emails on their websites.
I'll just reply to a few points:
a) The name naive is not suitable and might be insulting for the soliton community. The subject started with Three-Phase Solutions of the Kadomtsev–Petviashvili Equation By B. A. Dubrovin, Ron Flickinger, and Harvey Segur as an answer to Novikov challenge for making the finite gap effective. But I understand the name naive is not due to jean. He just used it. Please reconsider may Ellipsoidal Method is better.
When one has multiple algorithms, it's pretty common to call the more obvious or standard algorithm the "naive" one. An implementation of an algorithm can also be "naive" in the sense of not using any bells and whistles (perhaps because one worries more about correctness than speed). This is not a value judgement. The "naive" algorithm may very well be the superior one for a wide range of applications. But I'd be happy to use a different name for clarity.
b) for solitons applications, speed matters more than precession. While in Number Theory, like Galois Rep. precession matters more than higher genus. i.e this new theta function is more suitable for Number theory.
c) May be it is doing better than anything else up to genus 7. Very Good. But starting from g>=8, it becomes slow and problamitic.
d) It can become faster by multithreading or by machine precession. It is clear that the ellipsoid method has many hidden symmetries not fully used. How good it can be?!
I agree we should definitely add machine precision code. (That applies to many other parts of FLINT too.) Multithreading should be feasible here too.
Which symmetries do you have in mind? I'm surprised Jean isn't already exploiting the available symmetries in the series summation, but maybe for the applications he looked at this isn't important.
e) for testing; It might be better to use it with https://github.com/pascalmolin/hcperiods both of them in flint/arb i.e. they can be easily used together.
f) may be it is not a bad idea to initialize the curve seperatly and then compute the theta. Two seperate steps. I used this approach to make the theta faster and less RAM so more suitable for high genus up to 11. Not Bad, but low precession. Now, I know a little of flint so nice but hard to use!!!
Indeed, it's reasonable to take advantage of invariants as much as possible through precomputations. Can you make an explicit suggestion for the kind of interface you would like to see in acb_theta
to make this easier?
I understand that the new method is based upon a new duplication formula not known for solitons people. It is always nice to learn something new about this very old and yet unexplored subject and the interaction between different point of view is always fruitfull.
I shall play and read more about but the code is very clean, I mean no comments at all which make it hard with flint with no yet at least a draft preprint. I have just seen a slide of may 2024,i think. and some few materials of Dupont about the g=2 case.
I believe Jean is working hard to finish his paper :-) Perhaps if you ask he can share a working draft with you.
from flint.
That is too much, ok, here, we go for the anyltical part:
a) Nothing comes from Dubrovin is trivial. He is a super genius. the name "naive" might be insulting for the soliton community.
but again it is not jean.
b) Riemann Theta has a very long history. Let me share with you a little piece of history about:
Mumford who doesn't know the great Mumford. Do you know that Mumford derived in Theta II
an asymptotic formula for vanishing even theta (the Hyperelliptic) That was already had been derived exactly
by pringshein 100 years earlier before Mumford. It is mentioned in the last page of the HyperElliptic chapter
page 468 krazer. compare with Mumford Theta 2 /chapter 3 page 3.105. the table.
you can compare with the mathematica table That I shall put it next.
The up mentioned numerical problems with jean' code are some nan. we all have had many of them coming from some
division by zero from somewhere. It is not a big deal.
But the true problem from the theta function point of view:
- Pass the hyperelliptic test for many generic tests.
- Show me how general his formula in comparaison to Thomae Formulae
or its Bershadsky generalization (Bershadsky is already in Harvard) and how it
compare with some result of a spanish fellow who showed, based on suggestion
of Farkas, that Bershadsky general formula may fail. Bershadsky result is based
on Zamoldchikov work in exactly solvable models from conformal field theory. - Beyond Hyperelliptic, you are swimming/diving in the deepest darkest water of mathematics.
a duplication of a duplication of duplication is a more or less a real multiplication.
Really jean has a generic Real Addition (even a special case). Once Dubrovin said, analytically
it is a hard problem (Do you know what is a hard problem for someone like Dubrovin), almost hopless.
Try to just work out the g=2 case over a computer anlytically. It is a big mess.
Practically, You have solved the strong schottky problem. You have explicit addition formula what else
you need.
May Be jean should go slowly, consult Krazer not Krazer and Wirtinger not a good summary, Baker 1893 is good but very bad reference. He attributed Pringsheim to Weber and Noether. Baker the second book is some advanced topics.
But if jean results are really gnerel then he should in principle check Coble Theta results.
Jean claims something very genral and if it really true, he might need few years at least to check it against
the already published and known not to mentioned the published and not so known.
For the Numerical Part which is more relevant: Yes i have no problem to share some codes.
Initially, I wanted to write it as thematic tutorial for sage in three parts. But when someone
mentioned Flint 3.1 is now in sage. I got interested and that is how i came acroos here.
I work in complete isolation so sorry i haven't known your flint a long ago.
Even i should learn something about GitHub.
Good Luck, Best Luck to jean, I shall return to the numerical part. May if he shares a commented code
might be helpfull. The code is here but just make it clear.
Now, I am sad that hcperiods works only for Z[x] not C[x] as should be. So, I should fight back
with the Sage bruin code but it is slow very slow and sometimes it is Singular other Pari and Flint.
from flint.
The Pringsheim Loci I have checked up to g=7, it takes less than a minute. For g=8 it takes less than 10min.
g=9 is beyond my 2020 Laptop 4800Ryzen 7(with Renoir AMD gpu) 16 GB RAM. 1660Ti (striped cheap Turing gpu)
6GB.
To night I shall return to you for the numerical part.
Many thanks. It is nice to find some one who consider us humans and answer
our questions. Many thanks and shall be back.
from flint.
For the pringsheim table thetanull(z=0)
the rows are
1-g
2- 4^g (thetanull even+thetanull odd)
3- odd + even
4- the prinsheim numbers of vanishing even theta null
5- the total number of vanishing thetanull
compare with Mumford table.
Here Rauch was wrong when he published
THE VANISHING OF A THETA CONSTANT IS A
PECULIAR PHENOMENON
Not for the hyperelliptic, It is strange even Rauch and Farkas didn't mention Pringsheim
not Fay, not Mumford, not Accola, not Belolkols, Bobenko, Enolski, Its, Matveen.
Not Even the great Dubrovin.
from flint.
Those functions are not exposed by python-flint yet. Someone would have to add the code to call them.
@oscarbenjamin I did some stub work here: https://github.com/edgarcosta/python-flint/tree/acb_theta
but some tests failed without any good reason.
I have just rebased, with the hope that the tests now run
from flint.
but some tests failed without any good reason.
There were some previous CI problems that I fixed somehow. Just now there seems to be a problem with Flint main causing some doctests involving roots to fail which is presumably caused by #2014.
from flint.
Untill now, there is no official publication for their work. I spent the last few days reading their code.
@kh-abd-kh, that's correct. I am aware that @j-kieffer is still working on the paper and wants to improve the current implementation.
from flint.
Guys, I don't know why you took "no official publication" in the very bad sense. If Elkies had gone through jean's work.
It is very probable to be something new and something correct. But how far it is true I don't know.
You are talking about Abel's french memoir 1826 not just Riemann 1857, 1866, 1867.
Beleive me, best luck, But it should be tested fully.
from flint.
Hi everybody, I'm just joining the discussion.
My understanding is that @kh-abd-kh is trying to use acb_theta for numerical computation in physics. First of all, I'm glad my work could be useful and I could very much use input from this community to improve the code and/or functionalities ! Thank you also for reporting the NaN's -- it's definitely a bug.
a) The name naive is not suitable and might be insulting for the soliton community.
I'm sorry, I really didn't mean it that way. Perhaps "summation algorithm" would be more descriptive name, and more consistent with functions names from acb_modular.
b) for solitons applications, speed matters more than precession. While in Number Theory, like Galois Rep. precession matters more than higher genus. i.e this new theta function is more suitable for Number theory.
c) May be it is doing better than anything else up to genus 7. Very Good. But starting from g>=8, it becomes slow and problamitic.
d) It can become faster by multithreading or by machine precession. It is clear that the ellipsoid method has many hidden symmetries not fully used. How good it can be?!
I'm indeed a number theorist :)
I've tried to use all the symmetries I could think of in the summation phase, but perhaps I missed some. However I'm not using extra symmetries that would appear for special period matrices (e.g. real or zero coefficients) at the moment.
In higher genus (starting from g=3 or 4), the main factor behind the performance issues is that we should use a better reduction algorithm than LLL. Perhaps Minkowski reduction is achievable for these dimensions. @fredrik-johansson , do you know of any efforts in this direction ? Some other factors that could slow the code down are that I'm using acb_t
's, not machine precision, and that FLINT requires a provably correct error bound.
e) for testing; It might be better to use it with https://github.com/pascalmolin/hcperiods both of them in flint/arb i.e. they can be easily used together.
I agree that would be a very nice way of testing if hcperiods was part of Flint ! Perhaps it will be one day. At the time, acb_theta
was already a large addition, so I didn't pursue this.
f) may be it is not a bad idea to initialize the curve seperatly and then compute the theta. Two seperate steps. I used this approach to make the theta faster and less RAM so more suitable for high genus up to 11. Not Bad, but low precession. Now, I know a little of flint so nice but hard to use!!!
I'm wondering if this precomputation would be similar to calling acb_theta_naive_all (to be renamed?) with several values of z. If that's the case it wouldn't be hard to separate the two parts of the computation.
I understand that the new method is based upon a new duplication formula not known for solitons people. It is always nice to learn something new about this very old and yet unexplored subject and the interaction between different point of view is always fruitfull.
The duplication formula appears in Mumford, it is a particular case of Prop. 6.4, p. 221 of "Tata lectures on Theta I". We don't claim any novelty here (apart from the idea of using it to evaluate theta functions, which is Noam's.)
I've been working on the preprint, but it's been a busy semester and I haven't been able to put in on Arxiv yet. However I do have a version that is readable and that I can put on my website soon, i.e. after I check with Noam.
The implementation can be optimized too. In fact this is related to point f) above: the main plan is to introduce a new data structure to store precomputations (e.g. exponentials) in the summation algorithm, and to carry it around when the duplication formula is applied. This being said, regarding the overall performance, the main thing is that we're currently missing a Minkowski reduction algorithm.
from flint.
Sorry for being late:
Now, A very important case/test that i have'nt touched yet is:
The Fermat Curves like curves:
for g=2 life is easy and all are hyperelliptic. No such curves.
for g=3 we have the klein curve i have't checked your theta for the klein curve (Hurwitz curve)
for g=4 the Bring curve
For g=7 the Macbeath curve (Hurwitz curve)
For any of these curves the number of the vanishing even thetanull = 0
Fermat type curves there are many there should exist non-vanishing even thetanull.
IT shall make my life easier if there is directly a function that counts
the number of the vanishing even-thetanull
All odd thetanull vanish trivially.
but even thetanull they are the first test
For Hyperelliptic: This function should satisfy the Pringsheim number above directly.
For Fermat like curves(Klein-Bring-Macbeath) it should give zero.
IT IS A VERY IMPORTANT FUNCTION AND SHOULD EXIST BY DEFAULT
Now, these Fermat like curves are beyond hcperiods.
Working with acb_matrices in Flint is tedious:
1-
I should enter the RM by set entry by hand. that is tedious.
is there any "hack" i can use?
2-
if not then PLEASE make the acb_theta_all available in python-flint
so i can take the input directly using acb_mat
I have no problem to test any file you shall send to me.
This is a very important and should be tested.
It seems that your theta working well for hyperelliptic over Z[x]
but, also, must be tested for generic hyperelliptic i.e. over C[x].
Good Luck.
Later on, we shall return to the multithreading. But i need to test the
a) generic hyperellptic
b) fermat like curve and Hurwitz type (g=3 and 7)
Hurwitz g=14 is my dream but much beyond my limit.
Riemann Theta is constrained between two natural limit
Fermat -=-=-=-=- Hyperellptic
minimal=0 -=-=-=-=- maximal = Pringsheim Number
the new function vanishing_even_number should test these two limit.
from flint.
Now for multithreading:
I am using parallel/Sage the "cheapest" way
in cython omp i think like everybody.
That is not enough, I know.
Nvidia has a great compiler nvc++
I have written something about it here
https://forums.developer.nvidia.com/t/nvcc-is-the-greatest-winner-for-wsl-but-some-problems-with-gpu-cpu-offloading/262295
But it seems that nvidia is going Numba+Cupy way, I don't like this.
I prefer Dask is really impressive
https://forums.developer.nvidia.com/t/dask-is-another-big-winner-for-wsl/291803/3
Forget Tensorflow/Pytorch and all these blablabla.... Dask is really impressive I generated 16T array of fp32
and processed in 6 mins over my 1660Ti (6GB RAM) gpu. That is near impossible all my cpu RAM is 16GB,
all my HD is 1T+256G.
Numba is based on LLVM very bad float-point not at all as good as gcc
Cupy- is an illusion it generates cuda code but slower than numpy!!!!!!!!
Cupy broadcasting is fast but caching expensive, i have 6G gpu- i can use only 2G array
because of their caching.
nvc++ is good and bad -acc=multicore LLVM bad float-point
nvc++ -acc=gpu not optimal whatever not bad
but didn't evolve.
Finally, as far as i know Nvidia for the first time recognized in public
that CUDA optimization is hard.
please check:
deep dive into nvdia math library gtc 2024, you should find it on the youtube.
But, on the other side FOR SURE YOU already know parallelized scientific is lacking
behind. It is not just take old algorithms make it parallel.
IT NEEDS new algorithms, and that now big job. AND the scientific community
does not yet recognize this simple fact and it needs a lot of work.
Then when, the three student of Deconinck who built abelfunctions quit.+
Patterson (working for Boeing now)
Lynn Chua (wrote theta in Julia) left to google.
Student of Braden Northover (Riemann surfaces with symmetry:
algorithms and applications) left ANTONELLA D’AVANZO
(ON CHARGE 3 CYCLIC MONOPOLES) left
in france you had Caroline KALLA
(Fay’s identity in the theory
of integrable systems) left.
IT is a half miracle that we got someone interested in Theta and still
have a job.
You already know this but just to make it public - for the record - anyway.
Physics Community does not support work in Theta whatever it is extremly needed.
from flint.
OOps, Both of you already asked me about the intialization that I mentioned above.
My Theta is different for example it look like
RTc(7,[0,0,0,0,0,0,0],S64,X64,T64,Yinv64,nn,[])
7 is the genus [0...] shall be the z and now instead of RM on computing with it inside the theta no
S64 is the set of integers pts inside the ellpisiod, X64 the real part of RM ,
T64 = np.linalg.cholesky(Y64).T the cholesky of Y64 where Y64 is the imag part of RM
Yinv64 is obvoiusly the inverse of Y64
nn is the number of lattice pts of S64 but sometimes with symmetries can br less and S64 shall be reduced.
[] is the vectorial derivative
for parallelizing in sage is easy
@parallel(14)
def fRTc7(lfl): return abs(RTc(7,lfl,S64,X64,T64,Yinv64,nn,[]))
then
pfRTc7 = fRTc7(hlev);pfRTc7
lfl will be replaced by for example the even lattice pts of the theta with char.
The main poit i intialize the S64 out of the theta once for every curve.
In earlier, deconinck and van hoij or nbruin or abelfunctions
they intialize inside the theta every time even for the same curve.
my cython def looks like this
cpdef api RTc(int g, z,numpy.ndarray[DTYPE_tt, ndim=2] S,numpy.ndarray[DTYPE_tt, ndim=2] X,
numpy.ndarray[DTYPE_tt, ndim=2] T, numpy.ndarray[DTYPE_tt, ndim=2] Yinv,N,derivs):
api because i wanted intially to call it from Numba-jit, but i stuck, with Numba too
complicated for Numba to understand.
from flint.
@kh-abd-kh, you titled this issue "Problems with Riemann theta functions."
Can you please clearly itemize what the problems are and provide minimal examples showing such problems?
from flint.
Hi, dgarcosta
it started with problems in reply 5 (i think)
it becomes slow
build/acb_theta/profile/p-all 8 2 2
then starting from reply 9 it started to fail reply 9-12-13
i used hcperiods (since it is already) arb
you should find in reply 9 the new period.c that you use ie to build new hcperiod
that you can use to test it.
It still needs further tests many tests even for the simple hyperelliptic over C[x].
Sorry it got long and changed the path different times and get distracting.
so sorry.
from flint.
fredrik-johansson
have you ever talked with someone from nvdia ?
They have a lot money and funding and investing Billions $
for their AI.
Dask_cudf might be agood intersection point but
you should first convence them flint can be useful to
them. (Good Luck) Once I tried to explain
that parallelizable loops carry rep. of the symmetric
group. May be they thought i am nuts.
Try this guy, at least He is in europe and one
of the cheif mind behind Rapids.
Adam Grzywaczewski
Senior Deep Learning Data Scientist, NVIDIA
100 Brook Drive, Reading, Berkshire, RG2 6UJ, UK
from flint.
Ok, I have now a working flint-python version, so my life is easier now.
I can compare everything together and shall be easier for people to see the differences.
edgarcosta
did you reproduced the hcperiods examples up.
from flint.
fredrik-johansson have you ever talked with someone from nvdia ?
I've talked with people from lots of companies including Google, Arm, Intel and Apple, though no one from Nvidia as far as I can recall. Some of these companies do have engineers who use FLINT or have contributed to FLINT in an individual capacity, but it's unlikely that we'll see any funding from that direction. These companies aren't charities and FLINT isn't commercially significant.
from flint.
Talk to this guy, Nvidia are building something called omiverse. Have you heared about it?
The Matrix, i am not kiding, i tried to explain for them trig are not enough.
Watch some of his videos on the youtube, the software are just the tip of the iceberg.
Transportation in usa for example is multi-trillion$ job, they are making a lot of pregress
in this domain. Nvidia is going to the big name, you can not neglect it.
Openmp, TPP, will be washed out by nvidia in ~ten years. If you are really really serious
about multithreading look to nvidia solution. For one simple reasons, they have alot of money.
In one day they made 220M$ in the stock.
I think if you can success to explain how gmp is extremely imp. and shall be usefull to be on gpu.
And, then every university will buy a nvidia. They are hiring a lot in their AI. and expanding
you might get even a jop offer. Watch their gtc on you tube. and good luck 1M$ is nothing for nvidia.
from flint.
Thank you edgarcosta
Now, this is working for me
mabd@LAPTOP-T8DQ9UK0:~/python-flint-acb_theta$ python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
from flint import acb, acb_mat, showgood
z = acb(1+1j); tau = acb(1.25+3j)
t0, t1, t2, t3 = acb_mat([[tau]]).theta(acb_mat([[z]])).entries()
sum([abs(x) for x in acb_mat([z.modular_theta(tau)]) - acb_mat([[-t3,t2,t0,t1]])])
[+/- 3.82e-14]
for i in range(4):showgood(lambda: acb_mat([[tau]]).theta(acb_mat([[z]])).entries()[i], dps=25)
...
0.9694430387796704100046143 - 0.03055696120816803328582847j
1.030556961196006476576271 + 0.03055696120816803328582847j
-1.220790267576967690128359 - 1.827055516791154669091679j
-1.820235910124989594900076 + 1.216251950154477951760042j
acb_mat([[1j,0],[0,2*1j]]).theta(acb_mat([[0],[0]])).transpose()
[ [1.09049252082308 +/- 3.59e-15] + [+/- 2.43e-16]j]
[ [1.08237710165638 +/- 4.15e-15] + [+/- 2.43e-16]j]
[[0.916991251621117 +/- 6.30e-16] + [+/- 2.43e-16]j]
[[0.910167024735558 +/- 7.93e-16] + [+/- 2.43e-16]j]
[[0.451696791791346 +/- 5.46e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
[[0.379830212998946 +/- 4.47e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
[[0.916991251621117 +/- 6.30e-16] + [+/- 2.43e-16]j]
[[0.910167024735558 +/- 7.93e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
[[0.379830212998946 +/- 4.47e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
[ [+/- 2.43e-16] + [+/- 2.43e-16]j]
exit()
from flint.
Good News
Thank you edgarcosta very much, It shall nice if you can also wrapp the "naive"=ellepsiodal
So We can test them in a very different ways.
I used edgar implementation with the g=3 example above and NOW IT WORKS FROM FLINT-PYTHON !!!!!!!
no nan
acb_mat([[-0.50000000000000000000000000000000000000 + 0.86602540378443864676372317075293618347 * 1j, 0.42430111895789252977610827256957797156 + 2.00981573528356430
08099884830428620600e-40 * 1j, -0.21215055947894626488805413628478898578 + 0.36745554787169801370570640951932810936 * 1j],[0.42430111895789252977609835736325599131 -1.
0865337926038956688202882359080577550e-40 * 1j, 6.3105444429574292053527613662310872616e-40 + 0.96334979959905850804688921696809410995 * 1j, 0.590015719774459833766623
01792102735549 -0.48167489979952925402344460848404705497 * 1j],[-0.21215055947894626488804917868162799566 + 0.36745554787169801370569782269876951039 * 1j, 0.5900157197
7445983376663293312734933574 -0.48167489979952925402344460848404705497 * 1j, -0.090015719774459833766627975524188345618 + 1.1192615997283054201516827944869867482 *1j ]
]).theta(acb_mat([[0],[0],[0]])).transpose()
[ [1.16457752886632 +/- 5.38e-15] + [-0.15331954030941 +/- 4.27e-15]j]
[ [1.02955197852295 +/- 5.52e-15] + [-0.08772636226482 +/- 5.78e-15]j]
[ [1.01717609887403 +/- 6.79e-15] + [-0.18173050100674 +/- 5.16e-15]j]
[ [0.78889297064210 +/- 5.46e-15] + [-0.10385972991417 +/- 5.17e-15]j]
[ [1.02955197852295 +/- 5.52e-15] + [0.08772636226482 +/- 5.78e-15]j]
[ [1.16457752886632 +/- 5.38e-15] + [0.15331954030941 +/- 4.27e-15]j]
[ [1.01717609887403 +/- 6.79e-15] + [0.18173050100674 +/- 5.13e-15]j]
[ [0.78889297064210 +/- 5.35e-15] + [0.10385972991417 +/- 5.13e-15]j]
[ [0.86034186942859 +/- 5.39e-15] + [-0.08012869188274 +/- 4.57e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [0.97176559225063 +/- 5.96e-15] + [-0.35120481892270 +/- 8.91e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [0.71536638662598 +/- 4.87e-15] + [0.29631445940632 +/- 8.38e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [0.76768269353474 +/- 7.44e-15] + [-0.10106734395847 +/- 6.21e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [1.02955197852295 +/- 5.68e-15] + [0.08772636226482 +/- 5.95e-15]j]
[ [0.85176526263730 +/- 7.30e-15] + [-0.14527448819093 +/- 5.18e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [0.85176526263730 +/- 7.41e-15] + [0.14527448819093 +/- 5.24e-15]j]
[ [1.02955197852295 +/- 5.68e-15] + [-0.08772636226482 +/- 5.92e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [0.71536638662598 +/- 4.98e-15] + [0.29631445940632 +/- 8.33e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[[-0.47136823412842 +/- 4.37e-15] + [-0.61429904266751 +/- 5.75e-15]j]
[ [0.55169402861377 +/- 8.38e-15] + [0.66501311140956 +/- 5.71e-15]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[ [+/- 4.70e-16] + [+/- 4.70e-16]j]
[[-0.43880273095854 +/- 6.97e-15] + [-0.93548134904982 +/- 5.58e-15]j]
[ [0.97176559225063 +/- 5.43e-15] + [-0.35120481892270 +/- 9.05e-15]j]
[ [0.93548134904982 +/- 4.98e-15] + [-0.43880273095854 +/- 7.05e-15]j]
[ [1.0852134948294 +/- 5.03e-14] + [-0.44951014762866 +/- 6.34e-15]j]
[ [0.73513121840011 +/- 8.78e-15] + [-0.30450132078519 +/- 9.55e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [1.01717609887403 +/- 9.80e-15] + [-0.18173050100674 +/- 8.41e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [0.78514226080592 +/- 8.08e-15] + [-0.36077745197183 +/- 9.27e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [0.78889297064210 +/- 8.80e-15] + [0.10385972991417 +/- 8.74e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [0.38019992590626 +/- 6.42e-15] + [0.05005426982810 +/- 6.78e-15]j]
[ [0.76768269353474 +/- 8.14e-15] + [-0.10106734395847 +/- 7.14e-15]j]
[ [0.61429904266751 +/- 6.22e-15] + [-0.47136823412842 +/- 5.25e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[[-0.14675169371411 +/- 7.22e-15] + [-0.35428992926583 +/- 8.53e-15]j]
[ [-0.3045013207852 +/- 2.11e-14] + [-0.7351312184001 +/- 2.01e-14]j]
[ [1.01717609887403 +/- 9.88e-15] + [0.18173050100674 +/- 8.33e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[[-0.78514226080592 +/- 7.90e-15] + [-0.36077745197183 +/- 9.01e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
[ [0.78889297064210 +/- 8.76e-15] + [-0.10385972991417 +/- 8.68e-15]j]
[ [0.38019992590626 +/- 6.23e-15] + [-0.05005426982810 +/- 6.74e-15]j]
[ [+/- 6.65e-16] + [+/- 6.65e-16]j]
you should trace now the origin of the problem.
for the g=2 case it seems hcperios and pyhton-flints agree (may be for hyperelliptic in genral - that is the first test to be done)
Now, I should compare the results with jean-abelfunctions/theta-bruin/theta-mine. The last three agree up to certain precession and speed differences
Thank you edgarcosta very much, It shall nice if you can also wrapp the "naive"=ellepsiodal
So We can test them in a very different ways.
again thank you edgar.
from flint.
Quite interesting, it works with flint-python the not yet implemented
and does not fully work from c-flint where it is implemented.
I need to do more higher genius tests and compare the values.
from flint.
g=3
Up, we have shown superelliptic g=3 (Klein quartic) is not working for hcperiods
now it works for flint-python.
The hyperelliptic is not working for flint-python, here three examples first
working in hcperios
1-
./build/example/periods --pol "x^7 + 2x^6 - x^5 - 6x^4 + 5x^3 - 2x^2 + 3x - 5" --gp --prec 51 --trim --de --desame
[-0.109226538255812 + 1.10937846253692 * I, 0.192781037872664 -0.654388922251044 * I, 0.137730882773612 + 0.0984092351090584 * I;0.192781037872664 -0.654388922251043 * I, 0.0507736700367485 + 1.12122907163584 * I, 0.339600278155789 -0.269819236493985 * I;0.137730882773612 + 0.0984092351090581 * I, 0.339600278155789 -0.269819236493984 * I, 0.402218599682293 + 0.780799555535845 * I]
genus: 3, lat pts: 64
RM again
[(-0.10923 + 1.1094j) +/- (1.29e-12, 1.29e-12j), (0.19278 - 0.65439j) +/- (1.35e-12, 1.35e-12j), (0.13773 + 0.098409j) +/- (3.25e-12, 3.25e-12j)]
[(0.19278 - 0.65439j) +/- (1.00e-12, 1.00e-12j), (0.050774 + 1.1212j) +/- (1.05e-12, 1.05e-12j), (0.33960 - 0.26982j) +/- (2.57e-12, 2.57e-12j)]
[(0.13773 + 0.098409j) +/- (2.92e-13, 2.92e-13j), (0.33960 - 0.26982j) +/- (2.90e-13, 2.90e-13j), (0.40222 + 0.78080j) +/- (8.14e-13, 8.15e-13j)]
the 64 thetas
(1.227119401224874728484338 + 0.2135703508650242943289754j) +/- (3.96e-11, 3.96e-11j), (1.118909678660759077217790 - 0.04673475800568743787621884j) +/- (4.45e-11, 4.50e-11j), (1.010005174246869863452503 + 0.07988137533052741545702702j) +/- (3.13e-11, 3.13e-11j), (0.8742922601490024092640851 - 0.3293974427525887538337201j) +/- (4.26e-11, 4.34e-11j), (0.9443849672114583704285451 + 0.1097480846684634192556018j) +/- (3.65e-11, 3.65e-11j), (0.9428065086751176160362320 - 0.2388362666591288263617798j) +/- (3.68e-11, 3.75e-11j), (1.026769546490961637630335 + 0.2523580557946329960827825j) +/- (3.14e-11, 3.14e-11j), (0.8559342828759288757112245 - 0.04154380640091009935233046j) +/- (4.46e-11, 4.49e-11j), (1.037328253361446961378078 + 0.4220107834933379820085975j) +/- (2.77e-11, 2.77e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (1.133352011203328402189072 + 0.2355158903325158537001016j) +/- (3.58e-11, 3.58e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (1.039474798957934709164874 + 0.3891301824510751128372021j) +/- (2.76e-11, 2.76e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.8775643077906885025640804 + 0.3089601034218292241462223j) +/- (3.62e-11, 3.62e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.9259334078464567241439909 + 0.2157659208893547564400706j) +/- (5.46e-11, 5.46e-11j), (1.109821284155657394876471 - 0.01506233043503987095723673j) +/- (7.34e-11, 7.38e-11j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.5530732602458945379453326 + 0.09625799260192169359839909j) +/- (5.43e-11, 5.43e-11j), (0.7277198407325307094595246 - 0.1626807787287641859919063j) +/- (5.72e-11, 5.77e-11j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.8066784146242311770436118 + 0.5433201730574439558552058j) +/- (5.07e-11, 5.07e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (-0.06669292522561376390655141 - 0.7610833183255008016487864j) +/- (5.86e-11, 5.83e-11j), (0.6299680365813977722666550 + 0.3989755321437085111568877j) +/- (4.38e-11, 4.38e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (-0.2268348508193662738108287 - 0.4314696551390297951655839j) +/- (5.39e-11, 5.34e-11j), (1.051654590475774142532828 + 0.1093750988888007591448570j) +/- (9.55e-11, 9.57e-11j), (0.9303456661242646141829482 + 0.005692217351506868167065889j) +/- (7.79e-11, 7.79e-11j), (0.7566763258566893135537157 - 0.01568609219623373629559637j) +/- (8.70e-11, 8.73e-11j), (0.5978663616711297201788966 - 0.3887301683436747978817039j) +/- (7.67e-11, 7.67e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0.7915696183506759631143268 + 0.3282787287607453752258380j) +/- (9.69e-11, 9.67e-11j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0.9588325272799695930814323 + 0.02857749428065828323219932j) +/- (9.66e-11, 9.69e-11j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.3592691027810990256341483 - 0.3294629336342738135101627j) +/- (4.40e-11, 4.40e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (8.583419553690747408999027e-19 - 2.635101068233259590863444e-16j) +/- (4.47e-11, 4.47e-11j), (0.9776046575911885305742999 + 0.2660462733927404510581027j) +/- (6.75e-11, 6.74e-11j), (1.146279857331331086811588 + 0.1612358662773684114810635j) +/- (6.21e-11, 6.21e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (-0.7068840833292893144346181 - 0.2704071159124310508303779j) +/- (5.48e-11, 5.47e-11j), (-0.9121079359223580595994463 - 0.2970447807602591971942729j) +/- (4.51e-11, 4.51e-11j), (0.7115966891482905509747070 + 0.6054087738392848194735052j) +/- (7.42e-11, 7.36e-11j), (0 + 0j) +/- (2.32e-15, 2.32e-15j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.1399495765672125191514397 - 0.8041136791846543729889163j) +/- (4.04e-11, 4.04e-11j), (0 + 0j) +/- (2.64e-15, 2.64e-15j), (0.3199036428781869556559059 - 0.6937992670663253313989571j) +/- (4.60e-11, 4.60e-11j), (-0.4313790956668075438074084 - 0.5678621364557279171947357j) +/- (5.38e-11, 5.32e-11j), (0 + 0j) +/- (2.32e-15, 2.32e-15j)
2-
mabd@LAPTOP-T8DQ9UK0:~/hcperiods-master/arb$ ./build/example/periods --pol "x^7 - x" --gp --prec 51 --trim --de --desame
[-0.280000000000000 + 0.959999999999999 * I, -0.480000000000000 + 0.360000000000000 * I, -0.160000000000000 + 0.120000000000000 * I;-0.480000000000000 + 0.360000000000000 * I, 0.320000000000000 + 0.760000000000000 * I, -0.560000000000000 -0.0800000000000001 * I;-0.160000000000000 + 0.120000000000000 * I, -0.560000000000000 -0.0800000000000002 * I, -0.520000000000001 + 0.640000000000000 * I]
genus: 3, lat pts: 64
RM again
[(-0.28000 + 0.96000j) +/- (1.24e-12, 1.24e-12j), (-0.48000 + 0.36000j) +/- (2.12e-12, 2.12e-12j), (-0.16000 + 0.12000j) +/- (2.47e-12, 2.47e-12j)]
[(-0.48000 + 0.36000j) +/- (5.34e-13, 5.34e-13j), (0.32000 + 0.76000j) +/- (9.26e-13, 9.27e-13j), (-0.56000 - 0.080000j) +/- (1.06e-12, 1.06e-12j)]
[(-0.16000 + 0.12000j) +/- (3.41e-13, 3.41e-13j), (-0.56000 - 0.080000j) +/- (5.96e-13, 5.96e-13j), (-0.52000 + 0.64000j) +/- (6.87e-13, 6.87e-13j)]
the 64 thetas
(1.036309972191670425445409 - 0.2120652144600999600143609j) +/- (1.25e-10, 1.26e-10j), (1.110559035210453515674089 + 0.3701863450701505797724167j) +/- (6.59e-11, 6.93e-11j), (1.047045099607069040814622 - 0.5235225498035345204073110j) +/- (1.27e-10, 1.27e-10j), (1.055885082486866188844488 + 0.06337748992832725747348377j) +/- (1.13e-10, 1.15e-10j), (1.055885082486865300666068 + 0.06337748992832842320765963j) +/- (1.03e-10, 1.05e-10j), (1.193373346752116148650202 + 0.3977911155840390122762074j) +/- (7.42e-11, 7.79e-11j), (0.7955822311680766922847852 - 0.3977911155840383461423926j) +/- (1.18e-10, 1.18e-10j), (0.7095840374061128663640829 + 0.2365280124687040297359886j) +/- (9.80e-11, 1.00e-10j), (1.125123181300941688220973 - 0.5625615906504712881996966j) +/- (8.77e-11, 8.77e-11j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (1.158745880845965636751771 - 0.5793729404229832624650953j) +/- (1.26e-10, 1.26e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (1.047045099607068152636202 - 0.5235225498035340763181011j) +/- (8.41e-11, 8.41e-11j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (1.036309972191670425445409 - 0.2120652144600995159251511j) +/- (1.29e-10, 1.29e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (1.110559035210453515674089 + 0.3701863450701519120400462j) +/- (1.18e-10, 1.22e-10j), (1.229035605027242183950875 + 0.4096785350090810240430983j) +/- (9.53e-11, 9.91e-11j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.69e-15, 2.69e-15j), (0.8438423859757064882103350 + 0.2812807953252354220552434j) +/- (9.30e-11, 9.56e-11j), (1.055885082486865300666068 + 0.06337748992832781258499608j) +/- (1.04e-10, 1.06e-10j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.69e-15, 2.69e-15j), (1.036309972191671313623829 - 0.2120652144600997379697560j) +/- (1.19e-10, 1.19e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (-0.06337748992832803462960101 + 1.055885082486865300666068j) +/- (1.52e-10, 1.52e-10j), (0.6690022462287874560615819 - 0.3345011231143939500753959j) +/- (1.04e-10, 1.04e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0.2120652144600996269474535 + 1.036309972191670425445409j) +/- (1.29e-10, 1.29e-10j), (0.6690022462287879001507918 - 0.3345011231143946162092107j) +/- (1.44e-10, 1.44e-10j), (0.8438423859757064882103350 + 0.2812807953252345338768237j) +/- (9.72e-11, 9.98e-11j), (1.125123181300942576399393 - 0.5625615906504708441104867j) +/- (1.54e-10, 1.54e-10j), (1.036309972191672201802248 - 0.2120652144601000710366634j) +/- (1.59e-10, 1.60e-10j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (1.047045099607069040814622 - 0.5235225498035354085857307j) +/- (1.49e-10, 1.49e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0.7914381548830826673679439 - 0.7018088490772775855930377j) +/- (1.52e-10, 1.52e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0.7095840374061124222748731 + 0.2365280124687046958698033j) +/- (1.59e-10, 1.59e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (-5.117883457130394228227598e-16 - 4.474652725388200570866341e-16j) +/- (9.20e-11, 9.20e-11j), (0.8438423859757069322995449 + 0.2812807953252360881890581j) +/- (1.51e-10, 1.54e-10j), (0.8827345599464897496488902 + 0.5828290575494570191494859j) +/- (1.15e-10, 1.17e-10j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0 + 0j) +/- (2.70e-15, 2.70e-15j), (0.3345011231143939500753959 + 0.6690022462287896765076312j) +/- (1.54e-10, 1.54e-10j), (0.5235225498035340763181011 + 1.047045099607069040814622j) +/- (1.48e-10, 1.48e-10j), (1.055885082486865300666068 + 0.06337748992832781258499608j) +/- (1.58e-10, 1.58e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (-0.2365280124687036966690812 + 0.7095840374061133104532928j) +/- (1.54e-10, 1.54e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j), (0.7955822311680771363739950 - 0.3977911155840390122762074j) +/- (1.64e-10, 1.64e-10j), (0.8438423859757060441211252 + 0.2812807953252360881890581j) +/- (1.52e-10, 1.52e-10j), (0 + 0j) +/- (2.86e-15, 2.86e-15j)
3-
mabd@LAPTOP-T8DQ9UK0:~/hcperiods-master/arb$ ./build/example/periods --pol "x^8 - 1" --gp --prec 51 --trim --de --desame
[0.853553390593274 * I, 0.500000000000000, 0.146446609406726 * I;0.500000000000000 + 7.00157434200405e-18 * I, 0.707106781186548 * I, -0.500000000000000 + 1.58280811688675e-17 * I;0.146446609406726 * I, -0.500000000000000, 0.853553390593274 * I]
genus: 3, lat pts: 64
RM again
[(0 + 0.85355j) +/- (2.63e-12, 2.63e-12j), (0.50000 + 0j) +/- (4.50e-12, 4.50e-12j), (0 + 0.14645j) +/- (4.79e-12, 4.79e-12j)]
[(0.50000 + 7.0016e-18j) +/- (3.45e-13, 3.45e-13j), (0 + 0.70711j) +/- (5.85e-13, 5.85e-13j), (-0.50000 + 1.5828e-17j) +/- (6.09e-13, 6.09e-13j)]
[(0 + 0.14645j) +/- (9.54e-13, 9.54e-13j), (-0.50000 + 0j) +/- (1.66e-12, 1.66e-12j), (0 + 0.85355j) +/- (1.77e-12, 1.77e-12j)]
the 64 thetas
(1.465014375987251149524582 + 7.133082886149919395823761e-18j) +/- (1.18e-10, 1.18e-10j), (1.184110031656714134840058 - 5.371556047058991829667993e-18j) +/- (8.22e-11, 8.22e-11j), (1.138150604494422957202460 + 1.287535950387725655150970e-17j) +/- (1.47e-10, 1.47e-10j), (0.7620864111821092912180120 - 3.015878169794867501104598e-18j) +/- (1.04e-10, 1.04e-10j), (1.184110031656714134840058 + 5.497062488825244880715109e-18j) +/- (7.48e-11, 7.48e-11j), (1.035921599796363778978048 - 3.747872999125711770281089e-18j) +/- (6.84e-11, 6.84e-11j), (0.7620864111821084030395923 + 1.387149844138780775858869e-17j) +/- (1.14e-10, 1.14e-10j), (0.4714374164047265836074985 + 6.820133929886164444725323e-19j) +/- (8.61e-11, 8.61e-11j), (1.184110031656714134840058 + 2.723673120813045232072766e-17j) +/- (2.01e-10, 2.01e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.184110031656714134840058 + 4.026493420728303064311859e-18j) +/- (1.24e-10, 1.24e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0.8711027597526546095707545 + 2.941921978297606736148857e-17j) +/- (1.70e-10, 1.70e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0.8711027597526554977491742 - 4.932395109818961514476665e-19j) +/- (6.62e-11, 6.62e-11j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.138150604494422957202460 + 6.357187517610830808902207e-18j) +/- (7.03e-11, 7.03e-11j), (1.184110031656714134840058 - 1.145011105015742770164885e-17j) +/- (8.17e-11, 8.17e-11j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.184110031656714134840058 + 1.029169075148974223804126e-17j) +/- (7.95e-11, 7.95e-11j), (1.138150604494422957202460 - 8.707416354652852007718037e-18j) +/- (9.18e-11, 9.18e-11j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0.7620864111821075148611726 + 3.580947783008516842648140e-17j) +/- (1.75e-10, 1.75e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.859702085521448886277709e-17 + 0.8711027597526563859275939j) +/- (7.69e-11, 7.69e-11j), (0.8711027597526546095707545 + 3.393519197512078955024551e-17j) +/- (1.76e-10, 1.76e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.747357879737428974440574e-17 + 0.7620864111821092912180120j) +/- (9.15e-11, 9.16e-11j), (1.184110031656714134840058 + 4.177681849520503729963363e-18j) +/- (1.18e-10, 1.18e-10j), (0.8711027597526559418383840 - 5.878474342662455973917751e-18j) +/- (8.24e-11, 8.24e-11j), (1.184110031656714134840058 + 1.171499506673483825107824e-17j) +/- (1.28e-10, 1.28e-10j), (0.8711027597526559418383840 - 3.801772744781920729443858e-18j) +/- (8.45e-11, 8.45e-11j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.035921599796363778978048 + 1.383557551143268318112521e-17j) +/- (1.49e-10, 1.49e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.138150604494423845380879 + 1.164126641341313098917245e-17j) +/- (1.51e-10, 1.51e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (6.881986470627508358139281e-16 - 4.986377686365775862009392e-19j) +/- (7.25e-11, 7.25e-11j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0.4714374164047274717859182 - 2.297350850008416312507277e-18j) +/- (9.49e-11, 9.49e-11j), (0.7620864111821084030395923 - 1.907292409905685678246698e-20j) +/- (6.29e-11, 6.29e-11j), (0.8711027597526563859275939 - 1.267475321106291180355273e-17j) +/- (8.05e-11, 8.05e-11j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.202170145113300336688664e-17 - 0.8711027597526559418383840j) +/- (7.65e-11, 7.65e-11j), (-5.527385067560910584658548e-18 - 0.7620864111821092912180120j) +/- (9.47e-11, 9.47e-11j), (0.4714374164047259174736837 + 2.358306533362649218045475e-17j) +/- (1.21e-10, 1.21e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (1.387120865025070998603037e-17 + 0.7620864111821097353072219j) +/- (1.05e-10, 1.05e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j), (-0.4714374164047272497413132 + 1.278610562649798430489500e-17j) +/- (8.99e-11, 8.99e-11j), (1.991063713968525047611038e-17 - 0.7620864111821092912180120j) +/- (1.26e-10, 1.26e-10j), (0 + 0j) +/- (2.04e-15, 2.04e-15j)
from flint.
Here not working in edgar flint-python
1-
acb_mat([[-0.109226538255812 + 1.10937846253692 * 1j, 0.192781037872664 -0.654388922251044 * 1j, 0.137730882773612 + 0.0984092351090584 * 1j],[0.192781037872664 -0.654388922251043 * 1j, 0.0507736700367485 + 1.12122907163584 * 1j, 0.339600278155789 -0.269819236493985 * 1j],[0.137730882773612 + 0.0984092351090581 * 1j, 0.339600278155789 -0.269819236493984 * 1j, 0.402218599682293 + 0.780799555535845 * 1j]]).theta(acb_mat([[0],[0],[0]])).transpose()
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
......
2-
acb_mat([[-0.280000000000000 + 0.959999999999999 * 1j, -0.480000000000000 + 0.360000000000000 * 1j, -0.160000000000000 + 0.120000000000000 * 1j],[-0.48000000000000
0 + 0.360000000000000 * 1j, 0.320000000000000 + 0.760000000000000 * 1j, -0.560000000000000 -0.0800000000000001 * 1j],[-0.160000000000000 + 0.120000000000000 * 1j, -0.5
60000000000000 -0.0800000000000002 * 1j, -0.520000000000001 + 0.640000000000000 * 1j]]).theta(acb_mat([[0],[0],[0]])).transpose()
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
......................
3-
acb_mat([[0.853553390593274 * 1j, 0.500000000000000, 0.146446609406726 * 1j],[0.500000000000000 + 7.00157434200405e-18 * 1j, 0.707106781186548 * 1j, -0.50000000000
0000 + 1.58280811688675e-17 * 1j],[0.146446609406726 * 1j, -0.500000000000000, 0.853553390593274 * 1j]]).theta(acb_mat([[0],[0],[0]])).transpose()
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
[nan + nanj]
.............................
from flint.
they correspond to three g=3 hyperelliptic (taking into account --m 2 is the default in hcperiods)
./build/example/periods --pol "x^7 + 2x^6 - x^5 - 6x^4 + 5x^3 - 2x^2 + 3x - 5" --gp --prec 51 --trim --de --desame ./build/example/periods --pol "x^7 - x" --gp --prec 51 --trim --de --desame
./build/example/periods --pol "x^8 - 1" --gp --prec 51 --trim --de --desame
they work in hcperiods but they don't work for flint-python(edgar)
While we have above g=3 superelliptic(Klein) not working for hcperiods but works for flint-python(edgar)
any explanation!, good luck.
jean: when you have a "fast" g=8 theta, tell me, I shall be happy to test it. whether hcperiods/flint-python.
I shall stop here.
from flint.
In #2017 (comment) @kh-abd-kh said
Here not working in edgar flint-python
...
None of your tau's are in the Siegel upper half-space
In [22]: tau1 = acb_mat([[-0.109226538255812 + 1.10937846253692 * 1j, 0.192781037872664 -0.654388922251044 * 1j, 0.137730882773612 + 0.0984092351090584 * 1j],[0.192781037872664 -0.654388922251043 * 1j, 0.0507736700367485 + 1.12122907163
...: 584 * 1j, 0.339600278155789 -0.269819236493985 * 1j],[0.137730882773612 + 0.0984092351090581 * 1j, 0.339600278155789 -0.269819236493984 * 1j, 0.402218599682293 + 0.780799555535845 * 1j]])
In [23]: tau2 = acb_mat([[-0.280000000000000 + 0.959999999999999 * 1j, -0.480000000000000 + 0.360000000000000 * 1j, -0.160000000000000 + 0.120000000000000 * 1j],[-0.480000000000000 + 0.360000000000000 * 1j, 0.320000000000000 + 0.7600000
...: 00000000 * 1j, -0.560000000000000 -0.0800000000000001 * 1j],[-0.160000000000000 + 0.120000000000000 * 1j, -0.560000000000000 -0.0800000000000002 * 1j, -0.520000000000001 + 0.640000000000000 * 1j]])
In [24]: tau3 = acb_mat([[0.853553390593274 * 1j, 0.500000000000000, 0.146446609406726 * 1j],[0.500000000000000 + 7.00157434200405e-18 * 1j, 0.707106781186548 * 1j, -0.500000000000000 + 1.58280811688675e-17 * 1j],[0.146446609406726 * 1j
...: , -0.500000000000000, 0.853553390593274 * 1j]])
In [25]: def Siegel_check(tau):
...: return tau.transpose().overlaps(tau) and all(l.real > 0 and l.imag.overlaps(0) for l in tau.imag.eig())
...:
In [26]: [Siegel_check(tau) for tau in [tau1, tau2, tau3]]
Out[26]: [False, False, False]
In #2017 (comment) @kh-abd-kh said:
The hyperelliptic is not working for flint-python, here three examples first
working in hcperios
These are not minimal examples
A minimal example would be, something like:
In [33]: Siegel_check((tau1 + tau1.transpose()))
Out[33]: True
In [34]: (tau1 + tau1.transpose()).theta(acb_mat([[0],[0],[0]])).entries()[0]
Out[34]: [0.988314474845587 +/- 5.57e-16] + [0.013216715346885 +/- 3.92e-16]j
In [35]: tau1 = acb_mat([[-0.109226538255812 + 1.10937846253692 * 1j, 0.192781037872664 -0.654388922251044 * 1j, 0.137730882773612 + 0.0984092351090584 * 1j],[0.192781037872664 -0.654388922251043 * 1j, 0.0507736700367485 + 1.12122907163
...: 584 * 1j, 0.339600278155789 -0.269819236493985 * 1j],[0.137730882773612 + 0.0984092351090581 * 1j, 0.339600278155789 -0.269819236493984 * 1j, 0.402218599682293 + 0.780799555535845 * 1j]])
In [36]: (tau1 + tau1.transpose()).theta(acb_mat([[0],[0],[0]])).entries()[0]
Out[36]: [0.988314474845587 +/- 5.57e-16] + [0.013216715346885 +/- 3.92e-16]j
In [37]: # Expected
In [38]: acb.pi()*1j
Out[38]: [3.14159265358979 +/- 3.34e-15]j
from flint.
Is there anything left to solve, or can this be closed?
from flint.
I think it can be closed. If anyone disagrees, please open a new issue with a concrete minimal example
from flint.
Sorry, I was not connected for the last month.
a brief review for what i found in the last month
1- acb_theta_all is nice but due to seigel reduction (30-50% faster) but breaks down at g=9 whatever it
should take 6-9 hours but it shouldn't break/crash after 1min.
2- acb_theta_ql_all the algorithm is slow without siegel reduction is really slow and breaks down for g=8
the AGM should be fast.
3- acb_theta_naive_all "is terrible" does not scale with higher prec and breaks down at g=7.
I think you have problems with the initialization.
I don't need theta_naive and i don't need theta_ql.
Good Luck,
you can close it.
from flint.
Related Issues (20)
- fmpz_mpoly_pfrac_init: internal error HOT 7
- Worklist for nfloat HOT 3
- SIMD abstraction layers HOT 5
- 3.1.3 isn't in the Downlioads section of the website: https://flintlib.org/downloads.html HOT 2
- Document need for libtool
- Improve parallel Schönhage-Strassen multiplication
- file padic_types.h not getting installed HOT 2
- Test failures when compiled with GCC graphite flags HOT 5
- #error machine_vector.h not implemented on AMD Ryzen 7 without forcing --enable-avx HOT 14
- Segmentation Fault in Fortran-C Interoperability when Using Arb Library for Complex Integration HOT 2
- Error finding PkgConfig while installing Flint package using CMake on Windows HOT 1
- Add a function to compute b/sqrt(a)
- Multivariate rational functions over the integers mod n HOT 3
- AVX and nmod HOT 8
- FLINT license should be stated on the FLINT website HOT 1
- Gentoo Linux: sci-mathematics/flint-3.1.3_p1 QA Notice: Package triggers severe warnings which indicate that it may exhibit random runtime failures. HOT 1
- Missing functions in `fq_default` HOT 1
- `fq_default_poly_evaluate_fq_default` with context type `FMPZ_MOD` segfaults
- `make check` failing at `sub_dddmmmsss` under macOS (aarch64-apple-darwin22.6.0)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flint.