flintlib / flint

FLINT (Fast Library for Number Theory)
http://www.flintlib.org
GNU Lesser General Public License v3.0
401 stars 235 forks source link

Problems with Riemann theta functions #2017

Open kh-abd-kh opened 3 weeks ago

kh-abd-kh commented 3 weeks ago

How can i call
9.21 acb_theta.h – Riemann theta functions? from flint 3.2/3.1 Thank you.

oscarbenjamin commented 3 weeks ago

Those functions are not exposed by python-flint yet. Someone would have to add the code to call them.

kh-abd-kh commented 3 weeks ago

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?!

oscarbenjamin commented 3 weeks ago

Look at e.g. src/flint/types/acb.pyx.

kh-abd-kh commented 2 weeks ago

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

fredrik-johansson commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

periods.txt

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.

kh-abd-kh commented 2 weeks ago

A related issue Riemann Matrix just two lines in Sage #38204

https://github.com/sagemath/sage/issues/38204

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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)

kh-abd-kh commented 2 weeks ago

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!

fredrik-johansson commented 2 weeks ago

I transferred this issue to flint since it now concerns problems with the implementation.

kh-abd-kh commented 2 weeks ago

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.

fredrik-johansson commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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:

1) Pass the hyperelliptic test for many generic tests. 2) 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. 3) 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.

kh-abd-kh commented 2 weeks ago

Pringsheim

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.

kh-abd-kh commented 2 weeks ago

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.

edgarcosta commented 2 weeks ago

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

oscarbenjamin commented 2 weeks ago

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 https://github.com/flintlib/flint/pull/2014.

edgarcosta commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

j-kieffer commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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.

edgarcosta commented 2 weeks ago

@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?

kh-abd-kh commented 2 weeks ago

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.

kh-abd-kh commented 2 weeks ago

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

kh-abd-kh commented 2 weeks ago

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.

fredrik-johansson commented 1 week ago

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.

kh-abd-kh commented 1 week ago

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.

kh-abd-kh commented 1 week ago

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()

kh-abd-kh commented 1 week ago

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.

kh-abd-kh commented 1 week ago

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.

kh-abd-kh commented 1 week ago

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)

kh-abd-kh commented 1 week ago

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]

.............................

kh-abd-kh commented 1 week ago

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.

edgarcosta commented 1 week ago

In https://github.com/flintlib/flint/issues/2017#issuecomment-2171773012 @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 https://github.com/flintlib/flint/issues/2017#issuecomment-2171771490 @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
kh-abd-kh commented 1 week ago

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.