# Point -- a type used to store a point in complex space

## Description

This type is used to store a solution to a polynomial system obtained by such functions as solveSystem, track. The following methods can be used to access a Point:
• coordinates -- get the coordinates (returns a list)
• matrix -- get the coordinates (returns a matrix)
• status -- get the type of solution (e.g., Regular)
Possible types of Points (accessed by status):
• Regular -- the jacobian of the polynomial system is regular at the point
• Singular -- the jacobian of the polynomial system is (near)singular at the point
• Infinity -- the solution path is deemed divergent
• MinStepFailure -- the tracker failed to stay above the minimal step increment threshold
• NumericalRankFailure -- it is likely that in a sequence of deflations numerical rank did not give the correct rank
• RefinementFailure -- a solution refinement function failed
• Origin -- the solution path approaches the origin (impossible to give a relative error estimate)
• IncreasePrecision -- the current precision is deemed inadequate for robust computation
• DecreasePrecision -- the current precision is deemed excessive (more than the double of sufficient precision)
• null -- the point has not been classified
Only coordinates are displayed (by net); to see the rest use peek. Different algorithms attach different information describing the point. For example, solveSystem produces the following.

 i1 : loadPackage "NumericalAlgebraicGeometry"; i2 : R = CC[x,y]; i3 : sols = solveSystem{x^2+y^2-3, x^3-y^3-7} o3 = {{-1.7957-1.31322*ii, 1.7957-1.31322*ii}, {-.101284+.779159*ii, ------------------------------------------------------------------------ -1.89699-.041601*ii}, {-1.7957+1.31322*ii, 1.7957+1.31322*ii}, ------------------------------------------------------------------------ {-.101284-.779159*ii, -1.89699+.041601*ii}, {1.89699+.041601*ii, ------------------------------------------------------------------------ .101284-.779159*ii}, {1.89699-.041601*ii, .101284+.779159*ii}} o3 : List i4 : pt = first sols o4 = pt o4 : Point i5 : peek pt o5 = Point{Coordinates => {-1.7957-1.31322*ii, 1.7957-1.31322*ii}} H => GateHomotopy{...12...} LastIncrement => .15 LastT => 1 NumberOfSteps => 9 SolutionStatus => Regular i6 : coordinates pt o6 = {-1.7957-1.31322*ii, 1.7957-1.31322*ii} o6 : List i7 : status pt o7 = Regular o7 : Symbol

The other keys that may be attached include

• NumberOfSteps -- the number of steps in made by the continuation procedure
• LastT -- the last value of the continuation parameter produced during tracking (equals 1 for a regular solution)
• ErrorBoundEstimate -- an estimate of the distance from the approximation to the actual solution
• MaxPrecision -- max precision used during the homotopy tracking
• Multiplicity -- the multiplicity of an isolated solution
• WindingNumber -- the winding number of a singular solution determined in the end-games
• DeflationNumber -- number of first-order deflations in the regularization of a singular solution
• Tracker -- reserved for developers

Basic service functions:

## Methods that use a point :

• "areEqual(BasicList,Point)" -- see areEqual -- determine if solutions are equal
• "areEqual(Point,BasicList)" -- see areEqual -- determine if solutions are equal
• "areEqual(Point,Point)" -- see areEqual -- determine if solutions are equal
• "Point == Point" -- see areEqual -- determine if solutions are equal
• "dualSpace(Matrix,Point)" -- see dualSpace -- construct a DualSpace
• "dualSpace(PolySpace,Point)" -- see dualSpace -- construct a DualSpace
• "evaluate(Matrix,Point)" -- see evaluate -- evaluate a polynomial system or matrix at a point
• "evaluateJacobian(PolySystem,Point)" -- see evaluate -- evaluate a polynomial system or matrix at a point
• "isGEQ(Point,Point)" -- see isGEQ -- compare two points
• "isRealPoint(Point)" -- see isRealPoint -- determine whether a point is real
• norm(Thing,Point) -- p-norm of the point
• "coordinates(Point)"
• "matrix(Point)"
• "net(Point)"
• "status(Point)"
• "point(Point)" -- see point -- construct a Point
• project(Point,ZZ) -- project a point
• "residual(List,Point)" -- see residual -- residual of a polynomial function at a point
• "residual(PolySystem,Point)" -- see residual -- residual of a polynomial function at a point
• "evaluate(System,Point)" -- see System -- a system of functions
• "evaluate(System,Point,Point)" -- see System -- a system of functions
• "evaluateJacobian(System,Point)" -- see System -- a system of functions
• "evaluateJacobian(System,Point,Point)" -- see System -- a system of functions
• "texMath(Point)" -- see texMath(PolySpace) -- convert to TeX math format

## For the programmer

The object Point is a type, with ancestor classes MutableHashTable < HashTable < Thing.