Algebraic curves in the plane may be defined as the set of points (*x*, *y*) satisfying an equation of the form *f*(*x*, *y*)=0, where *f* is a polynomial function *f*:**R**^{2}→**R**. If *f* is expanded as

f
=
a
0
+
b
0
x
+
b
1
y
+
c
0
x
2
+
2
c
1
x
y
+
c
2
y
2
+
…
If the origin (0, 0) is on the curve then *a*_{0}=0. If *b*_{1}≠0 then the implicit function theorem guarantees there is a smooth function *h* so that the curve has the form *y*=*h*(*x*) near the origin. Similarly, if *b*_{0}≠0 then there is a smooth function *k* so that the curve has the form *x*=*k*(*y*) near the origin. In either case, there is a smooth map from **R** to the plane which defines the curve in the neighborhood of the origin. Note that at the origin

b
0
=
∂
f
∂
x
,
b
1
=
∂
f
∂
y
,
so the curve is non-singular or *regular* at the origin if at least one of the partial derivatives of *f* is non-zero. The singular points are those points on the curve where both partial derivatives vanish,

f
(
x
,
y
)
=
∂
f
∂
x
=
∂
f
∂
y
=
0.
Assume the curve passes through the origin and write *y*=*mx*. Then *f* can be written

f
=
(
b
0
+
m
b
1
)
x
+
(
c
0
+
2
m
c
1
+
c
2
m
2
)
x
2
+
…
.
If *b*_{0}+*mb*_{1} is not 0 then *f*=0 has a solution of multiplicity 1 at *x*=0 and the origin is a point of single contact with line *y*=*mx*. If *b*_{0}+*mb*_{1}=0 then *f*=0 has a solution of multiplicity 2 or higher and the line *y*=*mx*, or *b*_{0}x+*b*_{1}y=0, is tangent to the curve. In this case, if *c*_{0}+2*mc*_{1}+c_{2}*m*^{2} is not 0 then the curve has a point of double contact with *y*=*mx*. If the coefficient of *x*^{2}, *c*_{0}+2*mc*_{1}+c_{2}*m*^{2}, is 0 but the coefficient of *x*^{3} is not then the origin is a point of inflection of the curve. If the coefficient of *x*^{2} and *x*^{3} are both 0 then the origin is called *point of undulation* of the curve. This analysis can be applied to any point on the curve by translating the coordinate axes so that the origin is at the given point.

If *b*_{0} and *b*_{1} are both 0 in the above expansion, but at least one of *c*_{0}, *c*_{1}, *c*_{2} is not 0 then the origin is called a double point of the curve. Again putting *y*=*mx*, *f* can be written

f
=
(
c
0
+
2
m
c
1
+
c
2
m
2
)
x
2
+
(
d
0
+
3
m
d
1
+
3
m
2
d
2
+
d
3
m
3
)
x
3
+
…
.
Double points can be classified according to the solutions of *c*_{0}+*2mc*_{1}+*m*^{2}c_{2}=0.

If *c*_{0}+*2mc*_{1}+*m*^{2}c_{2}=0 has two real solutions for *m*, that is if *c*_{0}*c*_{2}−*c*_{1}^{2}<0, then the origin is called a crunode. The curve in this case crosses itself at the origin and has two distinct tangents corresponding to the two solutions of *c*_{0}+*2mc*_{1}+*m*^{2}c_{2}=0. The function *f* has a saddle point at the origin in this case.

If *c*_{0}+*2mc*_{1}+*m*^{2}*c*_{2}=0 has no real solutions for *m*, that is if *c*_{0}*c*_{2}−*c*_{1}^{2}>0, then the origin is called an acnode. In the real plane the origin is an isolated point on the curve, however when considered as a complex curve the origin is not isolated and has two imaginary tangents corresponding to the two complex solutions of *c*_{0}+*2mc*_{1}+*m*^{2}*c*_{2}=0. The function *f* has a local extremum at the origin in this case.

If *c*_{0}+*2mc*_{1}+*m*^{2}*c*_{2}=0 has a single solution of multiplicity 2 for *m*, that is if *c*_{0}*c*_{2}−*c*_{1}^{2}=0, then the origin is called a cusp. The curve in this case changes direction at the origin creating a sharp point. The curve has a single tangent at the origin which may be considered as two coincident tangents.

The term *node* is used to indicate either a crunode or an acnode, in other words a double point which is not a cusp. The number of nodes and the number of cusps on a curve are two of the invariants used in the Plücker formulas.

If one of the solutions of *c*_{0}+*2mc*_{1}+*m*^{2}c_{2}=0 is also a solution of *d*_{0}+*3md*_{1}+*3m*^{2}*d*_{2}+*m*^{3}*d*_{3}=0 then the corresponding branch of the curve has a point of inflection at the origin. In this case the origin is called a *flecnode*. If both tangents have this property, so *c*_{0}+*2mc*_{1}+*m*^{2}c_{2} is a factor of *d*_{0}+*3md*_{1}+*3m*^{2}*d*_{2}+*m*^{3}*d*_{3}, then the origin is called a *biflecnode*.

In general, if all the terms of degree less than *k* are 0, and at least one term of degree *k* is not 0 in *f*, then curve is said to have a *multiple point* of order *k* or a *k-ple point*. The curve will have, in general, *k* tangents at the origin though some of these tangents may be imaginary.

A parameterized curve in *R*^{2} is defined as the image of a function *g*:**R**→**R**^{2}, *g*(*t*) = (*g*_{1}(*t*),*g*_{2}(*t*)). The singular points are those points where

d
g
1
d
t
=
d
g
2
d
t
=
0.
Many curves can be defined in either fashion, but the two definitions may not agree. For example, the cusp can be defined as an algebraic curve, *x*^{3}−*y*^{2} = 0, or as a parametrised curve, *g*(*t*) = (*t*^{2},*t*^{3}). Both definitions give a singular point at the origin. However, a node such as that of *y*^{2}−*x*^{3}−*x*^{2} = 0 at the origin is a singularity of the curve considered as an algebraic curve, but if we parameterize it as *g*(*t*) = (*t*^{2}−1,*t*(*t*^{2}−1)), then *g*′(*t*) never vanishes, and hence the node is *not* a singularity of the parameterized curve as defined above.

Care needs to be taken when choosing a parameterization. For instance the straight line *y* = 0 can be parameterised by *g*(*t*) = (*t*^{3},0) which has a singularity at the origin. When parametrised by *g*(*t*) = (*t*,0) it is nonsingular. Hence, it is technically more correct to discuss singular points of a smooth mapping rather than a singular point of a curve.

The above definitions can be extended to cover *implicit curves* which are defined as the zero set *f*^{−1}(0) of a smooth function, and it is not necessary just to consider algebraic varieties. The definitions can be extended to cover curves in higher dimensions.

A theorem of Hassler Whitney states

**Theorem**. Any closed set in

**R**^{n} occurs as the solution set of

*f*^{−1}(0) for some

**smooth** function f:

**R**^{n}→

**R**.

Any parameterized curve can also be defined as an implicit curve, and the classification of singular points of curves can be studied as a classification of singular point of an algebraic variety.

Some of the possible singularities are:

An isolated point: *x*^{2}+*y*^{2} = 0, an acnode
Two lines crossing: *x*^{2}−*y*^{2} = 0, a crunode
A cusp: *x*^{3}−*y*^{2} = 0, also called a *spinode*
A tacnode: *x*^{4}−*y*^{2} = 0
A rhamphoid cusp: *x*^{5}−*y*^{2} = 0.