Next: Divisor functions, Previous: Tutorial, Up: Preface
We only consider the so-called “imaginary” genus 2 curves, i.e., curves given by the equation
with \deg{h}\le 2 and \deg{f} = 5. We also require that C be nonsingular and the leading coefficient of f(x) be 1.
Types field_t
and poly_t
are for the field element
type and the corresponding polynomial type, respectively. They are defined
in the header file include/g2hec_nsfieldtype.h
. Type poly_tc
is the type const poly_t
.
A genus 2 curve is stored in the g2hcurve
class.
Below are some of the class’s public member functions. They are exported in
the file include/g2hec_Genus2_ops.h
.
g2hcurve()
:
default constructor; set curve to y^2 = 0.
g2hcurve(const poly_tc& poly1, const poly_tc& poly2)
:
constructor; sets curve to y^2 + poly2
*y = poly1
.
g2hcurve(const g2hcurve& hcurve)
:
copy constructor.
void set_f(const poly_tc& poly)
:
sets f(x) to poly
.
void set_h(const poly_tc& poly)
:
sets h(x) to poly
.
void update()
:
checks and set internal flags to determine whether
the curve is nonsingular and of genus 2. This function MUST be called
immediately after the curve has been changed by set_f()
,
set_h()
, or/and assignment, and before any further operations
related to the curve. This is very important to remember, otherwise error
may occur.
const poly_tc& get_f()
:
returns reference to polynomial f(x).
const poly_tc& get_h()
:
returns reference to polynomial h(x).
bool_t is_valid_curve()
:
returns TRUE is curve is nonsingular, genus 2, and f(x) is monic.
You can also write curve1 = curve2
naturally to set the value of
curve1
to be the same as curve2
. It is not needed that
curve2
be valid for this assignment.
You can do comparisons like
curve1 == curve2
or curve1 != curve2
to test if two curves
are the same. Curves do not need to be valid for these comparisons.
Next: Divisor functions, Previous: Tutorial, Up: Preface