# Laurent Series Rings¶

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.base_ring()
Rational Field
sage: S = LaurentSeriesRing(GF(17)['x'], 'y')
sage: S
Laurent Series Ring in y over Univariate Polynomial Ring in x over
Finite Field of size 17
sage: S.base_ring()
Univariate Polynomial Ring in x over Finite Field of size 17

sage.rings.laurent_series_ring.LaurentSeriesRing(base_ring, name=None, names=None, default_prec=None, sparse=False)

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, 'x'); R
Laurent Series Ring in x over Rational Field
sage: x = R.0
sage: g = 1 - x + x^2 - x^4 +O(x^8); g
1 - x + x^2 - x^4 + O(x^8)
sage: g = 10*x^(-3) + 2006 - 19*x + x^2 - x^4 +O(x^8); g
10*x^-3 + 2006 - 19*x + x^2 - x^4 + O(x^8)


You can also use more mathematical notation when the base is a field:

sage: Frac(QQ[['x']])
Laurent Series Ring in x over Rational Field
sage: Frac(GF(5)['y'])
Fraction Field of Univariate Polynomial Ring in y over Finite Field of size 5


Here the fraction field is not just the Laurent series ring, so you can’t use the Frac notation to make the Laurent series ring.

sage: Frac(ZZ[['t']])
Fraction Field of Power Series Ring in t over Integer Ring


Laurent series rings are determined by their variable and the base ring, and are globally unique.

sage: K = Qp(5, prec = 5)
sage: L = Qp(5, prec = 200)
sage: R.<x> = LaurentSeriesRing(K)
sage: S.<y> = LaurentSeriesRing(L)
sage: R is S
False
sage: T.<y> = LaurentSeriesRing(Qp(5,prec=200))
sage: S is T
True
sage: W.<y> = LaurentSeriesRing(Qp(5,prec=199))
sage: W is T
False


TESTS:

Check if changing global series precision does it right:

sage: set_series_precision(3)
sage: R.<x> = LaurentSeriesRing(ZZ)
sage: 1/(1 - 2*x)
1 + 2*x + 4*x^2 + O(x^3)
sage: set_series_precision(20)

class sage.rings.laurent_series_ring.LaurentSeriesRing_domain(base_ring, name=None, default_prec=None, sparse=False)

Initialization

TESTS:

sage: TestSuite(LaurentSeriesRing(ZZ,'t')).run()

class sage.rings.laurent_series_ring.LaurentSeriesRing_field(base_ring, name=None, default_prec=None, sparse=False)

Initialization

TESTS:

sage: TestSuite(LaurentSeriesRing(QQ,'t')).run()

class sage.rings.laurent_series_ring.LaurentSeriesRing_generic(base_ring, name=None, default_prec=None, sparse=False, category=None)

Univariate Laurent Series Ring

EXAMPLES:

sage: K, q = LaurentSeriesRing(CC, 'q').objgen(); K
Laurent Series Ring in q over Complex Field with 53 bits of precision
sage: loads(K.dumps()) == K
True
sage: P = QQ[['x']]
sage: F = Frac(P)
sage: TestSuite(F).run()


When the base ring $$k$$ is a field, the ring $$k((x))$$ is a CDVF, that is a field equipped with a discrete valuation for which it is complete. The appropriate (sub)category is automatically set in this case:

sage: k = GF(11)
sage: R.<x> = k[[]]
sage: F = Frac(R)
sage: F.category()
Category of complete discrete valuation fields
sage: TestSuite(F).run()

Element

alias of LaurentSeries

base_extend(R)

Returns the laurent series ring over R in the same variable as self, assuming there is a canonical coerce map from the base ring of self to R.

EXAMPLES:

sage: K.<x> = LaurentSeriesRing(QQ, default_prec=4)
sage: K.base_extend(QQ['t'])
Laurent Series Ring in x over Univariate Polynomial Ring in t over Rational Field

change_ring(R)

EXAMPLES:

sage: K.<x> = LaurentSeriesRing(QQ, default_prec=4)
sage: R = K.change_ring(ZZ); R
Laurent Series Ring in x over Integer Ring
sage: R.default_prec()
4

characteristic()

EXAMPLES:

sage: R.<x> = LaurentSeriesRing(GF(17))
sage: R.characteristic()
17

default_prec()

Get the precision to which exact elements are truncated when necessary (most frequently when inverting).

EXAMPLES:

sage: R.<x> = LaurentSeriesRing(QQ, default_prec=5)
sage: R.default_prec()
5

gen(n=0)

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.gen()
x

is_dense()

EXAMPLES:

sage: K.<x> = LaurentSeriesRing(QQ, sparse=True)
sage: K.is_dense()
False

is_exact()

Laurent series rings are inexact.

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.is_exact()
False

is_field(proof=True)

A Laurent series ring is a field if and only if the base ring is a field.

TESTS:

sage: LaurentSeriesRing(QQ,'t').is_field()
True
sage: LaurentSeriesRing(ZZ,'t').is_field()
False

is_sparse()

EXAMPLES:

sage: K.<x> = LaurentSeriesRing(QQ, sparse=True)
sage: K.is_sparse()
True

laurent_polynomial_ring()

If this is the Laurent series ring $$R((t))$$, return the Laurent polynomial ring $$R[t,1/t]$$.

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.laurent_polynomial_ring()
Univariate Laurent Polynomial Ring in x over Rational Field

ngens()

Laurent series rings are univariate.

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.ngens()
1

polynomial_ring()

If this is the Laurent series ring $$R((t))$$, return the polynomial ring $$R[t]$$.

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.polynomial_ring()
Univariate Polynomial Ring in x over Rational Field

power_series_ring()

If this is the Laurent series ring $$R((t))$$, return the power series ring $$R[[t]]$$.

EXAMPLES:

sage: R = LaurentSeriesRing(QQ, "x")
sage: R.power_series_ring()
Power Series Ring in x over Rational Field

residue_field()

Return the residue field of this Laurent series field if it is a complete discrete valuation field (i.e. if the base ring is a field, in which base it is also the residue field).

EXAMPLES:

sage: R.<x> = LaurentSeriesRing(GF(17))
sage: R.residue_field()
Finite Field of size 17

sage: R.<x> = LaurentSeriesRing(ZZ)
sage: R.residue_field()
Traceback (most recent call last):
...
TypeError: The base ring is not a field

set_default_prec(n)

Set the default precision.

This method is deprecated.

TESTS:

sage: R.<x> = LaurentSeriesRing(QQ)
sage: R.set_default_prec(3)
doctest:...: DeprecationWarning: This method is deprecated.
See http://trac.sagemath.org/16201 for details.
sage: 1/(x^5-x^7)
x^-5 + x^-3 + O(x^-2)

uniformizer()

Return a uniformizer of this Laurent series field if it is a discrete valuation field (i.e. if the base ring is actually a field). Otherwise, an error is raised.

EXAMPLES:

sage: R.<t> = LaurentSeriesRing(QQ)
sage: R.uniformizer()
t

sage: R.<t> = LaurentSeriesRing(ZZ)
sage: R.uniformizer()
Traceback (most recent call last):
...
TypeError: The base ring is not a field

sage.rings.laurent_series_ring.is_LaurentSeriesRing(x)

TESTS:

sage: from sage.rings.laurent_series_ring import is_LaurentSeriesRing
sage: K.<q> = LaurentSeriesRing(QQ)
sage: is_LaurentSeriesRing(K)
True


#### Previous topic

Multivariate Power Series.

Laurent Series