Home Online Manual
Top
Back: cantorred
Forward: cantormult
FastBack: crypto_lib
FastForward: teachstd_lib
Up: hyperel_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.12.4.11 double

Procedure from library hyperel.lib (see hyperel_lib).

Usage:
double(D,h,f);

Return:
list Q=2*D

Note:
important: Divisor D has to be semireduced!
Special case of Cantor's algorithm.
Computes reduced divisor div(Q[1],Q[2])= 2*div(D[1],D[2]).
The divisors are defined over the basering.
Curve C:y^2+h(x)y=f(x) is defined over the basering.

Example:
 
LIB "hyperel.lib";
ring R=7,x,dp;
// hyperelliptic curve y^2 + h*y = f
poly h=x;
poly f=x5+5x4+6x2+x+3;
// reduced divisor
list D=x2-1,2x-1;
double(D,h,f);
==> [1]:
==>    x2-2x+1
==> [2]:
==>    3x-2