Dense univariate polynomials over \(\RR\), implemented using MPFR¶
TESTS:
Check that operations with numpy elements work well (see trac ticket #18076 and trac ticket #8426):
sage: import numpy
sage: x = polygen(RR)
sage: x * numpy.int32('1')
x
sage: numpy.int32('1') * x
x
sage: x * numpy.int64('1')
x
sage: numpy.int64('1') * x
x
sage: x * numpy.float32('1.5')
1.50000000000000*x
sage: numpy.float32('1.5') * x
1.50000000000000*x
-
class
sage.rings.polynomial.polynomial_real_mpfr_dense.
PolynomialRealDense
¶ Bases:
sage.rings.polynomial.polynomial_element.Polynomial
TESTS:
sage: f = RR['x'].random_element() sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: isinstance(f, PolynomialRealDense) True
-
change_ring
(R)¶ EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [-2, 0, 1.5]) sage: f.change_ring(QQ) 3/2*x^2 - 2 sage: f.change_ring(RealField(10)) 1.5*x^2 - 2.0 sage: f.change_ring(RealField(100)) 1.5000000000000000000000000000*x^2 - 2.0000000000000000000000000000
-
degree
()¶ Return the degree of the polynomial.
EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [1, 2, 3]); f 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000 sage: f.degree() 2
TESTS:
sage: type(f.degree()) <type 'sage.rings.integer.Integer'>
-
integral
()¶ EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [3, pi, 1]) sage: f.integral() 0.333333333333333*x^3 + 1.57079632679490*x^2 + 3.00000000000000*x
-
list
()¶ EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [1, 0, -2]); f -2.00000000000000*x^2 + 1.00000000000000 sage: f.list() [1.00000000000000, 0.000000000000000, -2.00000000000000]
-
quo_rem
(other)¶ Return the quotient with remainder of
self
byother
.EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [-2, 0, 1]) sage: g = PolynomialRealDense(RR['x'], [5, 1]) sage: q, r = f.quo_rem(g) sage: q x - 5.00000000000000 sage: r 23.0000000000000 sage: q*g + r == f True sage: fg = f*g sage: fg.quo_rem(f) (x + 5.00000000000000, 0) sage: fg.quo_rem(g) (x^2 - 2.00000000000000, 0) sage: f = PolynomialRealDense(RR['x'], range(5)) sage: g = PolynomialRealDense(RR['x'], [pi,3000,4]) sage: q, r = f.quo_rem(g) sage: g*q + r == f True
TESTS:
Check that trac ticket #18467 is fixed:
sage: S.<x> = RR[] sage: z = S.zero() sage: z.degree() -1 sage: q, r = z.quo_rem(x) sage: q.degree() -1
-
reverse
()¶ Returns \(x^d f(1/x)\) where \(d\) is the degree of \(f\).
EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [-3, pi, 0, 1]) sage: f.reverse() -3.00000000000000*x^3 + 3.14159265358979*x^2 + 1.00000000000000
-
shift
(n)¶ Returns this polynomial multiplied by the power \(x^n\). If \(n\) is negative, terms below \(x^n\) will be discarded. Does not change this polynomial.
EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RR['x'], [1, 2, 3]); f 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000 sage: f.shift(10) 3.00000000000000*x^12 + 2.00000000000000*x^11 + x^10 sage: f.shift(-1) 3.00000000000000*x + 2.00000000000000 sage: f.shift(-10) 0
TESTS:
sage: f = RR['x'](0) sage: f.shift(3).is_zero() True sage: f.shift(-3).is_zero() True
-
truncate
(n)¶ Returns the polynomial of degree \(< n\) which is equivalent to self modulo \(x^n\).
EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RealField(10)['x'], [1, 2, 4, 8]) sage: f.truncate(3) 4.0*x^2 + 2.0*x + 1.0 sage: f.truncate(100) 8.0*x^3 + 4.0*x^2 + 2.0*x + 1.0 sage: f.truncate(1) 1.0 sage: f.truncate(0) 0
-
truncate_abs
(bound)¶ Truncate all high order coefficients below bound.
EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense sage: f = PolynomialRealDense(RealField(10)['x'], [10^-k for k in range(10)]) sage: f 1.0e-9*x^9 + 1.0e-8*x^8 + 1.0e-7*x^7 + 1.0e-6*x^6 + 0.000010*x^5 + 0.00010*x^4 + 0.0010*x^3 + 0.010*x^2 + 0.10*x + 1.0 sage: f.truncate_abs(0.5e-6) 1.0e-6*x^6 + 0.000010*x^5 + 0.00010*x^4 + 0.0010*x^3 + 0.010*x^2 + 0.10*x + 1.0 sage: f.truncate_abs(10.0) 0 sage: f.truncate_abs(1e-100) == f True
-
-
sage.rings.polynomial.polynomial_real_mpfr_dense.
make_PolynomialRealDense
(parent, data)¶ EXAMPLES:
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import make_PolynomialRealDense sage: make_PolynomialRealDense(RR['x'], [1,2,3]) 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000