Changeset 1a3911 in git for Singular/LIB/hyperel.lib
- Timestamp:
- Apr 6, 2009, 2:39:02 PM (15 years ago)
- Branches:
- (u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
- Children:
- 08e081516771eec845058a046616a8c0d7e8325b
- Parents:
- 7de8e4cf4e88e60e523f5ebb65a61c114ff3674a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/hyperel.lib
r7de8e4 r1a3911 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: hyperel.lib,v 1. 1 2007-05-24 11:57:58 SingularExp $";2 version="$Id: hyperel.lib,v 1.2 2009-04-06 12:39:02 seelisch Exp $"; 3 3 category="Teaching"; 4 4 info=" 5 LIBRARY: hyperel liptic.lib5 LIBRARY: hyperel.lib 6 6 AUTHOR: Markus Hochstetter, markushochstetter@gmx.de 7 7 8 NOTE: Thislibrary provides procedures for computing with divisors in the9 10 11 12 8 NOTE: The library provides procedures for computing with divisors in the 9 jacobian of hyperelliptic curves. In addition procedures are available 10 for computing the rational representation of divisors and vice versa. 11 The library is intended to be used for teaching and demonstrating 12 purposes but not for efficient computations. 13 13 14 14 … … 38 38 39 39 proc ishyper(poly h, poly f) 40 "USAGE: ishyper(h,f); h,f 41 RETURN: 1 if y^2+h(x)y=f(x) is hyperelliptic, else 040 "USAGE: ishyper(h,f); h,f=poly 41 RETURN: 1 if y^2+h(x)y=f(x) is hyperelliptic, 0 otherwise 42 42 NOTE: Tests, if y^2+h(x)y=f(x) is a hyperelliptic curve. 43 43 Curve is defined over basering. Additionally shows error-messages. … … 101 101 102 102 proc isoncurve(list P, poly h, poly f) 103 "USAGE: isoncurve(P,h,f); h,f poly103 "USAGE: isoncurve(P,h,f); h,f=poly; P=list 104 104 RETURN: 1 or 0 (if P is on curve or not) 105 NOTE: Tests, if P=(P[1],P[2]) is on the hyperelliptic curve 106 y^2+h(x)y=f(x) . 105 NOTE: Tests, if P=(P[1],P[2]) is on the hyperelliptic curve y^2+h(x)y=f(x). 107 106 Curve is defined over basering. 108 107 EXAMPLE: example isoncurve; shows an example … … 147 146 148 147 proc chinrestp(list b,list moduli) 149 "USAGE: chinrestp(b,moduli); b, modulilist of polynomials150 RETURN: poly nomialx, s.t. x= b[i] mod moduli[i]148 "USAGE: chinrestp(b,moduli); moduli, b, moduli=list of polynomials 149 RETURN: poly x, s.t. x= b[i] mod moduli[i] 151 150 NOTE: chinese remainder theorem for polynomials 152 151 EXAMPLE: example chinrestp; shows an example … … 193 192 RETURN: norm of a(x)-b(x)y in IF[C] 194 193 NOTE: The norm is a polynomial in just one variable. 195 Curve C: y^2+h(x)y=f(x) is defined over basering.194 Curve C: y^2+h(x)y=f(x) is defined over basering. 196 195 EXAMPLE: example norm; shows an example 197 196 " … … 217 216 "USAGE: multi(a,b,c,d,h,f); 218 217 RETURN: list L with L[1]-L[2]y=(a(x)-b(x)y)*(c(x)-d(x)y) in IF[C] 219 NOTE: Curve C: y^2+h(x)y=f(x) is defined over basering.218 NOTE: Curve C: y^2+h(x)y=f(x) is defined over basering. 220 219 EXAMPLE: example multi; shows an example 221 220 " … … 465 464 "USAGE: divisor(a,b,h,f); optional: divisor(a,b,h,f,s); s=0,1 466 465 RETURN: list P 467 NOTE: P[1][3]*(P[1][1], P[1][2]) +...+ P[size of(P)][3]*468 *(P[size of(P)][1], P[sizeof(P)][2]) - (*)infty=div(a(x)-b(x)y)466 NOTE: P[1][3]*(P[1][1], P[1][2]) +...+ P[size(P)][3]* 467 *(P[size(P)][1], P[size(P)][2]) - (*)infty=div(a(x)-b(x)y) 469 468 if there is an optional parameter s!=0, then divisor additonally 470 469 returns a parameter, which says, whether irreducible polynomials 471 470 occured during computations or not. Otherwise only warnings are 472 471 displayed on the monitor. For s=0 nothing happens. 473 Curve C: y^2+h(x)y=f(x) is defined over basering.472 Curve C: y^2+h(x)y=f(x) is defined over basering. 474 473 EXAMPLE: example divisor; shows an example 475 474 " … … 651 650 RETURN: list P 652 651 NOTE: important: Divisor D has to be semireduced! 653 Computes semireduced divisor 654 P[1][3]*(P[1][1], P[1][2]) +...+ P[sizeof(P)][3]* 655 *(P[sizeof(P)][1], P[sizeof(P)][2]) - (*)infty=div(D[1],D[2]) 652 Computes semireduced divisor P[1][3]*(P[1][1], P[1][2]) +...+ P[size(P)][3]* 653 *(P[size(P)][1], P[size(P)][2]) - (*)infty=div(D[1],D[2])@* 656 654 Curve C:y^2+h(x)y=f(x) is defined over basering. 657 655 EXAMPLE: example semidiv; shows an example … … 695 693 NOTE: Cantor's Algorithm - composition 696 694 important: D and Q have to be semireduced! 697 Computes semireduced divisor 698 div(P[1],P[2])= div(D[1],D[2]) + div(Q[1],Q[2]) 695 Computes semireduced divisor div(P[1],P[2])= div(D[1],D[2]) + div(Q[1],Q[2]) 699 696 The divisors are defined over the basering. 700 Curve C: y^2+h(x)y=f(x) is defined over the basering.697 Curve C: y^2+h(x)y=f(x) is defined over the basering. 701 698 EXAMPLE: example cantoradd; shows an example 702 699 " … … 739 736 NOTE: Cantor's algorithm - reduction. 740 737 important: Divisor D has to be semireduced! 741 Computes reduced divisor div(N[1],N[2])= div(D[1],D[2]). 738 Computes reduced divisor div(N[1],N[2])= div(D[1],D[2]).@* 742 739 The divisors are defined over the basering. 743 Curve C: y^2+h(x)y=f(x) is defined over the basering.740 Curve C: y^2+h(x)y=f(x) is defined over the basering. 744 741 EXAMPLE: example cantorred; shows an example 745 742 " … … 773 770 NOTE: important: Divisor D has to be semireduced! 774 771 Special case of Cantor's algorithm. 775 Computes reduced divisor div(Q[1],Q[2])= 2*div(D[1],D[2]) 772 Computes reduced divisor div(Q[1],Q[2])= 2*div(D[1],D[2]).@* 776 773 The divisors are defined over the basering. 777 774 Curve C:y^2+h(x)y=f(x) is defined over the basering. … … 804 801 Uses repeated doublings for a faster computation 805 802 of the reduced divisor m*D. 806 Attention: Factor m isint, this means bounded.803 Attention: Factor m=int, this means bounded. 807 804 For m<0 the inverse of m*D is returned. 808 805 The divisors are defined over the basering. 809 Curve C: y^2+h(x)y=f(x) is defined over the basering.806 Curve C: y^2+h(x)y=f(x) is defined over the basering. 810 807 EXAMPLE: example cantormult; shows an example 811 808 "
Note: See TracChangeset
for help on using the changeset viewer.