Lazy Laurent Series Operators¶
This module implements operators internally used to construct lazy Laurent series. The job of an operator attached to a series is to compute the \(n\)-th coefficient of the series if \(n\) is not less than the valuation of the series and the \(n\)-th coefficient is not declared to be a constant.
If a new operator is added to this module, an example of how it is used should be added below.
EXAMPLES:
sage: L.<z> = LazyLaurentSeriesRing(ZZ)
sage: f = 1/(1 - 2*z)
sage: g = 1/(1 + z^2)
Constructors:
sage: L(1)
1
sage: L.series([1,2,3,4], -10)
z^-10 + 2*z^-9 + 3*z^-8 + 4*z^-7
sage: L.gen()
z
sage: P.<x> = LaurentPolynomialRing(ZZ)
sage: p = (1 + 1/x)^3 + (1 + x)^4
sage: L(p)
z^-3 + 3*z^-2 + 3*z^-1 + 2 + 4*z + 6*z^2 + 4*z^3 + z^4
Unary operators:
sage: -f
-1 - 2*z - 4*z^2 - 8*z^3 - 16*z^4 - 32*z^5 - 64*z^6 + ...
sage: ~f
1 - 2*z + ...
Binary operators:
sage: f + g
2 + 2*z + 3*z^2 + 8*z^3 + 17*z^4 + 32*z^5 + 63*z^6 + ...
sage: f - g
2*z + 5*z^2 + 8*z^3 + 15*z^4 + 32*z^5 + 65*z^6 + 128*z^7 + ...
sage: f * g
1 + 2*z + 3*z^2 + 6*z^3 + 13*z^4 + 26*z^5 + 51*z^6 + ...
sage: f / g
1 + 2*z + 5*z^2 + 10*z^3 + 20*z^4 + 40*z^5 + 80*z^6 + ...
Transformers:
sage: 2*f
2 + 4*z + 8*z^2 + 16*z^3 + 32*z^4 + 64*z^5 + 128*z^6 + ...
sage: f.change_ring(GF(3))
1 + 2*z + z^2 + 2*z^3 + z^4 + 2*z^5 + z^6 + ...
sage: f.apply_to_coefficients(lambda c: c^2)
1 + 4*z + 16*z^2 + 64*z^3 + 256*z^4 + 1024*z^5 + 4096*z^6 + ...
sage: f.truncate(5)
1 + 2*z + 4*z^2 + 8*z^3 + 16*z^4
AUTHORS:
Kwankyu Lee (2019-02-24): initial version
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesBinaryOperator(left, right)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Abstract base class for binary operators.
INPUT:
left
– series on the left side of the binary operatorright
– series on the right side of the binary operator
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator¶
Bases:
object
Base class for operators computing coefficients of a lazy Laurent series.
Subclasses of this class are used to implement arithmetic operations for lazy Laurent series. These classes are not to be used directly by the user.
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_add(left, right)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesBinaryOperator
Operator for addition.
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_apply(series, function)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for applying a function.
INPUT:
series
– a lazy Laurent seriesfunction
– a Python function to apply to each coefficient of the series
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_change_ring(series, ring)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for changing the base ring of the
series
toring
.INPUT:
series
– a lazy Laurent seriesring
– a ring
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_constant(ring, constant)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for the generator element.
INPUT:
ring
– a lazy Laurent series ringconstant
– a constant of the base ring ofring
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_div(left, right)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesBinaryOperator
Operator for division.
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_gen(ring)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for the generator element.
INPUT:
ring
– a lazy Laurent series ring
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_inv(series)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesUnaryOperator
Operator for inversion.
INPUT:
series
– a lazy Laurent series
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_list(ring, l, v)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for the series defined by a list.
INPUT:
l
– listv
– integer
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_mul(left, right)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesBinaryOperator
Operator for multiplication.
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_neg(series)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesUnaryOperator
Operator for negation.
INPUT:
series
– a lazy Laurent series
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_polynomial(ring, poly)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for the series coerced from a polynomial or a Laurent polynomial.
INPUT:
ring
– a lazy Laurent series ringpoly
– a polynomial or a Laurent polynomial
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_scale(series, scalar)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for scalar multiplication of
series
withscalar
.INPUT:
series
– a lazy Laurent seriesscalar
– an element of the base ring
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_sub(left, right)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesBinaryOperator
Operator for subtraction.
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator_truncate(series, d)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Operator for truncation.
INPUT:
series
– a lazy Laurent seriesd
– an integer; the series is truncated the terms of degree \(> d\)
- class sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesUnaryOperator(series)¶
Bases:
sage.rings.lazy_laurent_series_operator.LazyLaurentSeriesOperator
Abstract base class for unary operators.
INPUT:
series
– series upon which the operator operates