cdef extern from "eclib/interface.h":
ctypedef struct bigint: #eclib uses NTL in Sage -- we call Cremona's "bigint" ZZ_c.
pass
ZZ_c new_bigint "to_ZZ"(long)
int I2int(ZZ_c)
cdef extern from "eclib/bigrat.h":
ctypedef struct bigrational "bigrational":
pass
bigrational new_bigrational "bigrational"(ZZ_c num, ZZ_c den)
cdef ZZ_c bigrational_num "num"(bigrational q)
cdef ZZ_c bigrational_den "den"(bigrational q)
cdef extern from "eclib/rat.h":
ctypedef struct rational "rational":
pass
rational new_rational "rational"(long num, long den)
cdef long rational_num "num"(rational q)
cdef long rational_den "den"(rational q)
cdef extern from "eclib/curve.h":
ctypedef struct Curve:
void (* getai)(ZZ_c a1, ZZ_c a2, ZZ_c a3, ZZ_c a4, ZZ_c a6)
Curve *new_Curve "new Curve"( ZZ_c aa1, ZZ_c aa2, ZZ_c aa3, ZZ_c aa4, ZZ_c aa6)
ctypedef struct Curvedata:
void (* getai)(ZZ_c a1, ZZ_c a2, ZZ_c a3, ZZ_c a4, ZZ_c a6)
Curvedata *new_Curvedata "new Curvedata"( Curve C, int m)
ctypedef struct CurveRed:
pass
CurveRed *new_CurveRed "new CurveRed"( Curvedata CD)
ZZ_c getconductor(CurveRed CR)