# Singular

#### D.10.1.5 extcurve

Procedure from library brnoeth.lib (see brnoeth_lib).

Usage:
extcurve( d, CURVE ); d an integer, CURVE a list

Return:
list L which is the update of the list CURVE with additional entries
 L[1][3]: ring (p,a),(x,y),lp (affine), L[1][4]: ring (p,a),(x,y,z),lp (projective), L[1][5]: ring (p,a),(x,y,t),ls (local), L[2][3]: int (the number of rational places),
the rings being defined over a field extension of degree d.
If d<2 then extcurve(d,CURVE); creates a list L which is the update of the list CURVE with additional entries
 L[1][5]: ring p,(x,y,t),ls, L[2][3]: int (the number of computed places over the base field).
In both cases, in the ring L[1][5] lists with the data for all the computed rational places (after a field extension of degree d) are created (see Adj_div):
 lists POINTS, LOC_EQS, BRANCHES, PARAMETRIZATIONS.

Note:
The list CURVE should be the output of NSplaces, and must contain (at least) one place of degree d.
You actually need all the places with degree dividing d. Otherwise, not all the places are computed, but only part of them.
This procedure must be executed before constructing AG codes, even if no extension is needed. The ring L[1][4] must be active when constructing codes over the field extension.

Example:
 LIB "brnoeth.lib"; int plevel=printlevel; printlevel=-1; ring s=2,(x,y),lp; list C=Adj_div(x5+y2+y); ==> The genus of the curve is 2 C=NSplaces(1..4,C); // since we have all points up to degree 4, we can extend the curve // to that extension, in order to get rational points over F_16; C=extcurve(4,C); ==> Total number of rational places : NrRatPl = 33 // e.g., display the basepoint of place no. 32: def R=C[1][5]; setring R; POINTS[32]; ==> [1]: ==> (a3+a2+1) ==> [2]: ==> (a+1) ==> [3]: ==> 1 printlevel=plevel;