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 -~----------~----~----~----~------~----~------~--~---
