Elements of function fields: rational¶
- class sage.rings.function_field.element_rational.FunctionFieldElement_rational[source]¶
Bases:
FunctionFieldElement
Elements of a rational function field.
EXAMPLES:
sage: K.<t> = FunctionField(QQ); K Rational function field in t over Rational Field sage: t^2 + 3/2*t t^2 + 3/2*t sage: FunctionField(QQ,'t').gen()^3 t^3
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1); K Rational function field in t over Rational Field >>> t**Integer(2) + Integer(3)/Integer(2)*t t^2 + 3/2*t >>> FunctionField(QQ,'t').gen()**Integer(3) t^3
K.<t> = FunctionField(QQ); K t^2 + 3/2*t FunctionField(QQ,'t').gen()^3
- denominator()[source]¶
Return the denominator of the rational function.
EXAMPLES:
sage: K.<t> = FunctionField(QQ) sage: f = (t+1) / (t^2 - 1/3); f (t + 1)/(t^2 - 1/3) sage: f.denominator() t^2 - 1/3
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> f = (t+Integer(1)) / (t**Integer(2) - Integer(1)/Integer(3)); f (t + 1)/(t^2 - 1/3) >>> f.denominator() t^2 - 1/3
K.<t> = FunctionField(QQ) f = (t+1) / (t^2 - 1/3); f f.denominator()
- element()[source]¶
Return the underlying fraction field element that represents the element.
EXAMPLES:
sage: K.<t> = FunctionField(GF(7)) sage: t.element() t sage: type(t.element()) # needs sage.libs.ntl <... 'sage.rings.fraction_field_FpT.FpTElement'> sage: # needs sage.rings.finite_rings sage: K.<t> = FunctionField(GF(131101)) sage: t.element() t sage: type(t.element()) <... 'sage.rings.fraction_field_element.FractionFieldElement_1poly_field'>
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('t',)); (t,) = K._first_ngens(1) >>> t.element() t >>> type(t.element()) # needs sage.libs.ntl <... 'sage.rings.fraction_field_FpT.FpTElement'> >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(131101)), names=('t',)); (t,) = K._first_ngens(1) >>> t.element() t >>> type(t.element()) <... 'sage.rings.fraction_field_element.FractionFieldElement_1poly_field'>
K.<t> = FunctionField(GF(7)) t.element() type(t.element()) # needs sage.libs.ntl # needs sage.rings.finite_rings K.<t> = FunctionField(GF(131101)) t.element() type(t.element())
- factor()[source]¶
Factor the rational function.
EXAMPLES:
sage: # needs sage.libs.pari sage: K.<t> = FunctionField(QQ) sage: f = (t+1) / (t^2 - 1/3) sage: f.factor() (t + 1) * (t^2 - 1/3)^-1 sage: (7*f).factor() (7) * (t + 1) * (t^2 - 1/3)^-1 sage: ((7*f).factor()).unit() 7 sage: (f^3).factor() (t + 1)^3 * (t^2 - 1/3)^-3
>>> from sage.all import * >>> # needs sage.libs.pari >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> f = (t+Integer(1)) / (t**Integer(2) - Integer(1)/Integer(3)) >>> f.factor() (t + 1) * (t^2 - 1/3)^-1 >>> (Integer(7)*f).factor() (7) * (t + 1) * (t^2 - 1/3)^-1 >>> ((Integer(7)*f).factor()).unit() 7 >>> (f**Integer(3)).factor() (t + 1)^3 * (t^2 - 1/3)^-3
# needs sage.libs.pari K.<t> = FunctionField(QQ) f = (t+1) / (t^2 - 1/3) f.factor() (7*f).factor() ((7*f).factor()).unit() (f^3).factor()
- inverse_mod(I)[source]¶
Return an inverse of the element modulo the integral ideal \(I\), if \(I\) and the element together generate the unit ideal.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: O = K.maximal_order(); I = O.ideal(x^2 + 1) sage: t = O(x + 1).inverse_mod(I); t -1/2*x + 1/2 sage: (t*(x+1) - 1) in I True
>>> from sage.all import * >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> O = K.maximal_order(); I = O.ideal(x**Integer(2) + Integer(1)) >>> t = O(x + Integer(1)).inverse_mod(I); t -1/2*x + 1/2 >>> (t*(x+Integer(1)) - Integer(1)) in I True
K.<x> = FunctionField(QQ) O = K.maximal_order(); I = O.ideal(x^2 + 1) t = O(x + 1).inverse_mod(I); t (t*(x+1) - 1) in I
- is_nth_power(n)[source]¶
Return whether this element is an
n
-th power in the rational function field.INPUT:
n
– integer
OUTPUT:
Returns
True
if there is an element \(a\) in the function field such that this element equals \(a^n\).ALGORITHM:
If
n
is a power of the characteristic of the field and the constant base field is perfect, then this uses the algorithm described in Lemma 3 of [GiTr1996].See also
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3)) sage: f = (x+1)/(x-1) sage: f.is_nth_power(1) True sage: f.is_nth_power(3) # needs sage.modules False sage: (f^3).is_nth_power(3) # needs sage.modules True sage: (f^9).is_nth_power(-9) # needs sage.modules True
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)), names=('x',)); (x,) = K._first_ngens(1) >>> f = (x+Integer(1))/(x-Integer(1)) >>> f.is_nth_power(Integer(1)) True >>> f.is_nth_power(Integer(3)) # needs sage.modules False >>> (f**Integer(3)).is_nth_power(Integer(3)) # needs sage.modules True >>> (f**Integer(9)).is_nth_power(-Integer(9)) # needs sage.modules True
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(3)) f = (x+1)/(x-1) f.is_nth_power(1) f.is_nth_power(3) # needs sage.modules (f^3).is_nth_power(3) # needs sage.modules (f^9).is_nth_power(-9) # needs sage.modules
- is_square()[source]¶
Return whether the element is a square.
EXAMPLES:
sage: K.<t> = FunctionField(QQ) sage: t.is_square() False sage: (t^2/4).is_square() True sage: f = 9 * (t+1)^6 / (t^2 - 2*t + 1); f.is_square() True sage: K.<t> = FunctionField(GF(5)) sage: (-t^2).is_square() # needs sage.libs.pari True sage: (-t^2).sqrt() # needs sage.libs.pari 2*t
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> t.is_square() False >>> (t**Integer(2)/Integer(4)).is_square() True >>> f = Integer(9) * (t+Integer(1))**Integer(6) / (t**Integer(2) - Integer(2)*t + Integer(1)); f.is_square() True >>> K = FunctionField(GF(Integer(5)), names=('t',)); (t,) = K._first_ngens(1) >>> (-t**Integer(2)).is_square() # needs sage.libs.pari True >>> (-t**Integer(2)).sqrt() # needs sage.libs.pari 2*t
K.<t> = FunctionField(QQ) t.is_square() (t^2/4).is_square() f = 9 * (t+1)^6 / (t^2 - 2*t + 1); f.is_square() K.<t> = FunctionField(GF(5)) (-t^2).is_square() # needs sage.libs.pari (-t^2).sqrt() # needs sage.libs.pari
- list()[source]¶
Return a list with just the element.
The list represents the element when the rational function field is viewed as a (one-dimensional) vector space over itself.
EXAMPLES:
sage: K.<t> = FunctionField(QQ) sage: t.list() [t]
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> t.list() [t]
K.<t> = FunctionField(QQ) t.list()
- nth_root(n)[source]¶
Return an
n
-th root of this element in the function field.INPUT:
n
– integer
OUTPUT:
Returns an element
a
in the rational function field such that this element equals \(a^n\). Raises an error if no such element exists.ALGORITHM:
If
n
is a power of the characteristic of the field and the constant base field is perfect, then this uses the algorithm described in Corollary 3 of [GiTr1996].See also
EXAMPLES:
sage: K.<x> = FunctionField(GF(3)) sage: f = (x+1)/(x+2) sage: f.nth_root(1) (x + 1)/(x + 2) sage: f.nth_root(3) Traceback (most recent call last): ... ValueError: element is not an n-th power sage: (f^3).nth_root(3) # needs sage.modules (x + 1)/(x + 2) sage: (f^9).nth_root(-9) # needs sage.modules (x + 2)/(x + 1)
>>> from sage.all import * >>> K = FunctionField(GF(Integer(3)), names=('x',)); (x,) = K._first_ngens(1) >>> f = (x+Integer(1))/(x+Integer(2)) >>> f.nth_root(Integer(1)) (x + 1)/(x + 2) >>> f.nth_root(Integer(3)) Traceback (most recent call last): ... ValueError: element is not an n-th power >>> (f**Integer(3)).nth_root(Integer(3)) # needs sage.modules (x + 1)/(x + 2) >>> (f**Integer(9)).nth_root(-Integer(9)) # needs sage.modules (x + 2)/(x + 1)
K.<x> = FunctionField(GF(3)) f = (x+1)/(x+2) f.nth_root(1) f.nth_root(3) (f^3).nth_root(3) # needs sage.modules (f^9).nth_root(-9) # needs sage.modules
- numerator()[source]¶
Return the numerator of the rational function.
EXAMPLES:
sage: K.<t> = FunctionField(QQ) sage: f = (t+1) / (t^2 - 1/3); f (t + 1)/(t^2 - 1/3) sage: f.numerator() t + 1
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> f = (t+Integer(1)) / (t**Integer(2) - Integer(1)/Integer(3)); f (t + 1)/(t^2 - 1/3) >>> f.numerator() t + 1
K.<t> = FunctionField(QQ) f = (t+1) / (t^2 - 1/3); f f.numerator()
- sqrt(all=False)[source]¶
Return the square root of the rational function.
EXAMPLES:
sage: K.<t> = FunctionField(QQ) sage: f = t^2 - 2 + 1/t^2; f.sqrt() (t^2 - 1)/t sage: f = t^2; f.sqrt(all=True) [t, -t]
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> f = t**Integer(2) - Integer(2) + Integer(1)/t**Integer(2); f.sqrt() (t^2 - 1)/t >>> f = t**Integer(2); f.sqrt(all=True) [t, -t]
K.<t> = FunctionField(QQ) f = t^2 - 2 + 1/t^2; f.sqrt() f = t^2; f.sqrt(all=True)
- valuation(place)[source]¶
Return the valuation of the rational function at the place.
Rational function field places are associated with irreducible polynomials.
INPUT:
place
– a place or an irreducible polynomial
EXAMPLES:
sage: K.<t> = FunctionField(QQ) sage: f = (t - 1)^2*(t + 1)/(t^2 - 1/3)^3 sage: f.valuation(t - 1) 2 sage: f.valuation(t) 0 sage: f.valuation(t^2 - 1/3) -3 sage: K.<x> = FunctionField(GF(2)) sage: p = K.places_finite()[0] # needs sage.libs.pari sage: (1/x^2).valuation(p) # needs sage.libs.pari -2
>>> from sage.all import * >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1) >>> f = (t - Integer(1))**Integer(2)*(t + Integer(1))/(t**Integer(2) - Integer(1)/Integer(3))**Integer(3) >>> f.valuation(t - Integer(1)) 2 >>> f.valuation(t) 0 >>> f.valuation(t**Integer(2) - Integer(1)/Integer(3)) -3 >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1) >>> p = K.places_finite()[Integer(0)] # needs sage.libs.pari >>> (Integer(1)/x**Integer(2)).valuation(p) # needs sage.libs.pari -2
K.<t> = FunctionField(QQ) f = (t - 1)^2*(t + 1)/(t^2 - 1/3)^3 f.valuation(t - 1) f.valuation(t) f.valuation(t^2 - 1/3) K.<x> = FunctionField(GF(2)) p = K.places_finite()[0] # needs sage.libs.pari (1/x^2).valuation(p) # needs sage.libs.pari