divisor_of_function appears to be badly broken:

E = EllipticCurve(j=1)
xx,yy,zz = E.coordinate_ring().gens()
E.divisor_of_function(yy)

gives the output

Type Error: "A positive bound (=0) must be specified.

If I then do

E0 = E.change_ring(GF(144169))
xxx,yyy,zzz = E0.coordinate_ring().gens()
E0.divisor_of_function(yyy)

just hangs up.

Looking at projective_curve.py starting at line 74, shows a rather bad
algorithm:

It has a loop that tries all rational points on the curve (which is
certainly disastrous for curves over
the rationals -- this appears to be the source of the first error --
since bound=0 is the default
when calling E.rational_points()) and checks each one to see if it's a
0 of the function which is the input.

This is terrible on two counts: (1) It's just not correct, since the
function might have 0's or poles which are not at points defined over
the field of definition. (2) It's either very inefficient (over finite
fields), or might never end over infinite fields.  It would seem much
better for it to reduce the problem to one of the zeros of a zero-
dimensional ideal (using Groebner in the most general case), which
essentially reduces to factorization of univariate polynomials.

Victor
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to