# CASA Function: passGenCurve

Generates a general curve and passing it through specified points.

### Calling Sequence:

• C := passGenCurve(deg,points,c)
• C := passGenCurve(deg,points,c,vars)
• C := passGenCurve(deg,points,c,vars, ext)

### Parameters:

deg : posint
• Degree of the resulting curve.
points : list(list)
• List of points through which the curve should pass.
c : table
• name of a global table to holding coefficients
vars : list(name)
• List of variables.
ext : list
• List of field extensions.

### Result:

C : algset
• A curve (or a system of curves) in projective space of degree deg passing through the specified points points.

### Description:

• The function returns a curve (or a system of curves) in projective 3-space of degree deg passing through specified points. The resulting curve will contain vars as variables.
• The third parameter is used as a name of a table holding coefficients of the resulting curve (system).
• If some points have algebraic coordinates, the fifth argument has to list extensions, where the coordinates of the points are lying. Precisely, for each point there has to be a list describing the extension of the coordinate field over the rational numbers. If all coordinates of a point are rational, the empty list has to be supplied. If some points have non-rational coordinates the procedure expects as the fifth argument a list of the same length as points where each element (list) specifies a tower of extensions [alpha_1,...,alpha_k] such that the corresponding point lies in Q(alpha_1,...,alpha_k) and the minimal polynomial for alpha_i (argument of the RootOf) is irreducible over Q(alpha_1,...,alpha_{i-1}).
• A point in points is given either as a list [x0,x1,x2] (denoting a simple point) or as a nested list [[x0,x1,x2],m] (denoting a singular point with multiplicity m). Note that m = 1 is possible.

### Examples:

> points := [[[RootOf(z^2+1),1,0],2],[[0,0,1],3],[[-1,-1,1],2]]:

> fieldExtensions := [[RootOf(z^2+1)],[],[]]:

> c1:=passGenCurve(5,points,u,[x,y,z],fieldExtensions);

> c2:=setRandomParameters(c1);

> singularities(c2);