\(p\)-Adic Capped Relative Elements¶
Elements of \(p\)-Adic Rings with Capped Relative Precision
AUTHORS:
- David Roe: initial version, rewriting to use templates (2012-3-1)
- Genya Zaytman: documentation
- David Harvey: doctests
-
class
sage.rings.padics.padic_capped_relative_element.
CRElement
¶ Bases:
sage.rings.padics.padic_capped_relative_element.pAdicTemplateElement
-
add_bigoh
(absprec)¶ Returns a new element with absolute precision decreased to
absprec
.INPUT:
absprec
– an integer or infinity
OUTPUT:
an equal element with precision set to the minimum of
self's
precision andabsprec
EXAMPLES:
sage: R = Zp(7,4,'capped-rel','series'); a = R(8); a.add_bigoh(1) 1 + O(7) sage: b = R(0); b.add_bigoh(3) O(7^3) sage: R = Qp(7,4); a = R(8); a.add_bigoh(1) 1 + O(7) sage: b = R(0); b.add_bigoh(3) O(7^3) The precision never increases:: sage: R(4).add_bigoh(2).add_bigoh(4) 4 + O(7^2) Another example that illustrates that the precision does not increase:: sage: k = Qp(3,5) sage: a = k(1234123412/3^70); a 2*3^-70 + 3^-69 + 3^-68 + 3^-67 + O(3^-65) sage: a.add_bigoh(2) 2*3^-70 + 3^-69 + 3^-68 + 3^-67 + O(3^-65) sage: k = Qp(5,10) sage: a = k(1/5^3 + 5^2); a 5^-3 + 5^2 + O(5^7) sage: a.add_bigoh(2) 5^-3 + O(5^2) sage: a.add_bigoh(-1) 5^-3 + O(5^-1)
-
is_equal_to
(_right, absprec=None)¶ Returns whether self is equal to right modulo \(\pi^{\mbox{absprec}}\).
If
absprec is None
, returns True if self and right are equal to the minimum of their precisions.INPUT:
right
– a \(p\)-adic elementabsprec
– an integer, infinity, orNone
EXAMPLES:
sage: R = Zp(5, 10); a = R(0); b = R(0, 3); c = R(75, 5) sage: aa = a + 625; bb = b + 625; cc = c + 625 sage: a.is_equal_to(aa), a.is_equal_to(aa, 4), a.is_equal_to(aa, 5) (False, True, False) sage: a.is_equal_to(aa, 15) Traceback (most recent call last): ... PrecisionError: Elements not known to enough precision sage: a.is_equal_to(a, 50000) True sage: a.is_equal_to(b), a.is_equal_to(b, 2) (True, True) sage: a.is_equal_to(b, 5) Traceback (most recent call last): ... PrecisionError: Elements not known to enough precision sage: b.is_equal_to(b, 5) Traceback (most recent call last): ... PrecisionError: Elements not known to enough precision sage: b.is_equal_to(bb, 3) True sage: b.is_equal_to(bb, 4) Traceback (most recent call last): ... PrecisionError: Elements not known to enough precision sage: c.is_equal_to(b, 2), c.is_equal_to(b, 3) (True, False) sage: c.is_equal_to(b, 4) Traceback (most recent call last): ... PrecisionError: Elements not known to enough precision sage: c.is_equal_to(cc, 2), c.is_equal_to(cc, 4), c.is_equal_to(cc, 5) (True, True, False)
-
is_zero
(absprec=None)¶ Determines whether this element is zero modulo \(\pi^{\mbox{absprec}}\).
If
absprec is None
, returnsTrue
if this element is indistinguishable from zero.INPUT:
absprec
– an integer, infinity, orNone
EXAMPLES:
sage: R = Zp(5); a = R(0); b = R(0,5); c = R(75) sage: a.is_zero(), a.is_zero(6) (True, True) sage: b.is_zero(), b.is_zero(5) (True, True) sage: c.is_zero(), c.is_zero(2), c.is_zero(3) (False, True, False) sage: b.is_zero(6) Traceback (most recent call last): ... PrecisionError: Not enough precision to determine if element is zero
-
list
(lift_mode='simple', start_val=None)¶ Returns a list of coefficients in a power series expansion of self in terms of \(\pi\). If self is a field element, they start at \(\pi^{\mbox{valuation}}\), if a ring element at \(\pi^0\).
For each lift mode, this function returns a list of \(a_i\) so that this element can be expressed as
\[\pi^v \cdot \sum_{i=0}^\infty a_i \pi^i\]where \(v\) is the valuation of this element when the parent is a field, and \(v = 0\) otherwise.
Different lift modes affect the choice of \(a_i\). When
lift_mode
is'simple'
, the resulting \(a_i\) will be non-negative: if the residue field is \(\mathbb{F}_p\) then they will be integers with \(0 \le a_i < p\); otherwise they will be a list of integers in the same range giving the coefficients of a polynomial in the indeterminant representing the maximal unramified subextension.Choosing
lift_mode
as'smallest'
is similar to'simple'
, but uses a balanced representation \(-p/2 < a_i \le p/2\).Finally, setting
lift_mode = 'teichmuller'
will yield Teichmuller representatives for the \(a_i\): \(a_i^q = a_i\). In this case the \(a_i\) will also be \(p\)-adic elements.INPUT:
lift_mode
–'simple'
,'smallest'
or'teichmuller'
(default:'simple'
)start_val
– start at this valuation rather than the default (\(0\) or the valuation of this element). Ifstart_val
is larger than the valuation of this element aValueError
is raised.
OUTPUT:
- the list of coefficients of this element. For base elements
these will be integers if
lift_mode
is'simple'
or'smallest'
, and elements ofself.parent()
iflift_mode
is'teichmuller'
.
Note
Use slice operators to get a particular range.
EXAMPLES:
sage: R = Zp(7,6); a = R(12837162817); a 3 + 4*7 + 4*7^2 + 4*7^4 + O(7^6) sage: L = a.list(); L [3, 4, 4, 0, 4] sage: sum([L[i] * 7^i for i in range(len(L))]) == a True sage: L = a.list('smallest'); L [3, -3, -2, 1, -3, 1] sage: sum([L[i] * 7^i for i in range(len(L))]) == a True sage: L = a.list('teichmuller'); L [3 + 4*7 + 6*7^2 + 3*7^3 + 2*7^5 + O(7^6), 0, 5 + 2*7 + 3*7^3 + O(7^4), 1 + O(7^3), 3 + 4*7 + O(7^2), 5 + O(7)] sage: sum([L[i] * 7^i for i in range(len(L))]) 3 + 4*7 + 4*7^2 + 4*7^4 + O(7^6) sage: R(0, 7).list() [] sage: R = Qp(7,4); a = R(6*7+7**2); a.list() [6, 1] sage: a.list('smallest') [-1, 2] sage: a.list('teichmuller') [6 + 6*7 + 6*7^2 + 6*7^3 + O(7^4), 2 + 4*7 + 6*7^2 + O(7^3), 3 + 4*7 + O(7^2), 3 + O(7)]
-
precision_absolute
()¶ Returns the absolute precision of this element.
This is the power of the maximal ideal modulo which this element is defined.
EXAMPLES:
sage: R = Zp(7,3,'capped-rel'); a = R(7); a.precision_absolute() 4 sage: R = Qp(7,3); a = R(7); a.precision_absolute() 4 sage: R(7^-3).precision_absolute() 0 sage: R(0).precision_absolute() +Infinity sage: R(0,7).precision_absolute() 7
-
precision_relative
()¶ Returns the relative precision of this element.
This is the power of the maximal ideal modulo which the unit part of self is defined.
EXAMPLES:
sage: R = Zp(7,3,'capped-rel'); a = R(7); a.precision_relative() 3 sage: R = Qp(7,3); a = R(7); a.precision_relative() 3 sage: a = R(7^-2, -1); a.precision_relative() 1 sage: a 7^-2 + O(7^-1) sage: R(0).precision_relative() 0 sage: R(0,7).precision_relative() 0
-
teichmuller_list
()¶ Returns a list [\(a_0\), \(a_1\),..., \(a_n\)] such that
- \(a_i^q = a_i\), where \(q\) is the cardinality of the residue field,
self.unit_part() =
\(\sum_{i = 0}^n a_i p^i\), and- if \(a_i \ne 0\), the absolute precision of \(a_i\) is self.precision_relative() - i
EXAMPLES:
sage: R = Qp(5,5); R(70).list('teichmuller') #indirect doctest [4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + O(5^5), 3 + 3*5 + 2*5^2 + 3*5^3 + O(5^4), 2 + 5 + 2*5^2 + O(5^3), 1 + O(5^2), 4 + O(5)]
-
unit_part
()¶ Returns \(u\), where this element is \(\pi^v u\).
EXAMPLES:
sage: R = Zp(17,4,'capped-rel') sage: a = R(18*17) sage: a.unit_part() 1 + 17 + O(17^4) sage: type(a) <type 'sage.rings.padics.padic_capped_relative_element.pAdicCappedRelativeElement'> sage: R = Qp(17,4,'capped-rel') sage: a = R(18*17) sage: a.unit_part() 1 + 17 + O(17^4) sage: type(a) <type 'sage.rings.padics.padic_capped_relative_element.pAdicCappedRelativeElement'> sage: a = R(2*17^2); a 2*17^2 + O(17^6) sage: a.unit_part() 2 + O(17^4) sage: b=1/a; b 9*17^-2 + 8*17^-1 + 8 + 8*17 + O(17^2) sage: b.unit_part() 9 + 8*17 + 8*17^2 + 8*17^3 + O(17^4) sage: Zp(5)(75).unit_part() 3 + O(5^20) sage: R(0).unit_part() Traceback (most recent call last): ... ValueError: unit part of 0 not defined sage: R(0,7).unit_part() O(17^0)
-
val_unit
(p=None)¶ Returns a pair
(self.valuation(), self.unit_part())
.INPUT:
p
– a prime (default:None
). If specified, will make sure that p==self.parent().prime()
Note
The optional argument
p
is used for consistency with the valuation methods on integer and rational.EXAMPLES:
sage: R = Zp(5); a = R(75, 20); a 3*5^2 + O(5^20) sage: a.val_unit() (2, 3 + O(5^18)) sage: R(0).val_unit() Traceback (most recent call last): ... ValueError: unit part of 0 not defined sage: R(0, 10).val_unit() (10, O(5^0))
-
-
class
sage.rings.padics.padic_capped_relative_element.
PowComputer_
¶ Bases:
sage.rings.padics.pow_computer.PowComputer_base
A PowComputer for a capped-relative padic ring or field.
-
sage.rings.padics.padic_capped_relative_element.
base_p_list
(n, pos, prime_pow)¶ Returns a base-\(p\) list of digits of
n
.INPUT:
n
– a positive Integer.pos
– a boolean. If True, then returns the standard base \(p\) expansion.- Otherwise, the digits lie in the range \(-p/2\) to \(p/2\).
prime_pow
– A PowComputer giving the prime.
EXAMPLES:
sage: from sage.rings.padics.padic_capped_relative_element import base_p_list sage: base_p_list(192837, True, Zp(5).prime_pow) [2, 2, 3, 2, 3, 1, 2, 2] sage: 2 + 2*5 + 3*5^2 + 2*5^3 + 3*5^4 + 5^5 + 2*5^6 + 2*5^7 192837 sage: base_p_list(192837, False, Zp(5).prime_pow) [2, 2, -2, -2, -1, 2, 2, 2] sage: 2 + 2*5 - 2*5^2 - 2*5^3 - 5^4 + 2*5^5 + 2*5^6 + 2*5^7 192837
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicCappedRelativeElement
¶ Bases:
sage.rings.padics.padic_capped_relative_element.CRElement
Constructs new element with given parent and value.
INPUT:
x
– value to coerce into a capped relative ring or fieldabsprec
– maximum number of digits of absolute precisionrelprec
– maximum number of digits of relative precision
EXAMPLES:
sage: R = Zp(5, 10, 'capped-rel')
Construct from integers:
sage: R(3) 3 + O(5^10) sage: R(75) 3*5^2 + O(5^12) sage: R(0) 0 sage: R(-1) 4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + 4*5^9 + O(5^10) sage: R(-5) 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + 4*5^9 + 4*5^10 + O(5^11) sage: R(-7*25) 3*5^2 + 3*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + 4*5^9 + 4*5^10 + 4*5^11 + O(5^12)
Construct from rationals:
sage: R(1/2) 3 + 2*5 + 2*5^2 + 2*5^3 + 2*5^4 + 2*5^5 + 2*5^6 + 2*5^7 + 2*5^8 + 2*5^9 + O(5^10) sage: R(-7875/874) 3*5^3 + 2*5^4 + 2*5^5 + 5^6 + 3*5^7 + 2*5^8 + 3*5^10 + 3*5^11 + 3*5^12 + O(5^13) sage: R(15/425) Traceback (most recent call last): ... ValueError: p divides the denominator
Construct from IntegerMod:
sage: R(Integers(125)(3)) 3 + O(5^3) sage: R(Integers(5)(3)) 3 + O(5) sage: R(Integers(5^30)(3)) 3 + O(5^10) sage: R(Integers(5^30)(1+5^23)) 1 + O(5^10) sage: R(Integers(49)(3)) Traceback (most recent call last): ... TypeError: p does not divide modulus 49
sage: R(Integers(48)(3)) Traceback (most recent call last): ... TypeError: p does not divide modulus 48
Some other conversions:
sage: R(R(5)) 5 + O(5^11)
Construct from Pari objects:
sage: R = Zp(5) sage: x = pari(123123) ; R(x) 3 + 4*5 + 4*5^2 + 4*5^3 + 5^4 + 4*5^5 + 2*5^6 + 5^7 + O(5^20) sage: R(pari(R(5252))) 2 + 2*5^3 + 3*5^4 + 5^5 + O(5^20) sage: R = Zp(5,prec=5) sage: R(pari(-1)) 4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + O(5^5) sage: pari(R(-1)) 4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + O(5^5) sage: pari(R(0)) 0 sage: R(pari(R(0,5))) O(5^5)
# todo: doctests for converting from other types of p-adic rings
-
lift
()¶ Return an integer or rational congruent to
self
moduloself
‘s precision. If a rational is returned, its denominator will equalp^ordp(self)
.EXAMPLES:
sage: R = Zp(7,4,'capped-rel'); a = R(8); a.lift() 8 sage: R = Qp(7,4); a = R(8); a.lift() 8 sage: R = Qp(7,4); a = R(8/7); a.lift() 8/7
-
residue
(absprec=1)¶ Reduces this element modulo \(p^{\mathrm{absprec}}\).
INPUT:
absprec
- a non-negative integer (default:1
)
OUTPUT:
This element reduced modulo \(p^\mathrm{absprec}\) as an element of \(\ZZ/p^\mathrm{absprec}\ZZ\)
EXAMPLES:
sage: R = Zp(7,4) sage: a = R(8) sage: a.residue(1) 1
This is different from applying
% p^n
which returns an element in the same ring:sage: b = a.residue(2); b 8 sage: b.parent() Ring of integers modulo 49 sage: c = a % 7^2; c 1 + 7 + O(7^4) sage: c.parent() 7-adic Ring with capped relative precision 4
For elements in a field, application of
% p^n
always returns zero, the remainder of the division byp^n
:sage: K = Qp(7,4) sage: a = K(8) sage: a.residue(2) 8 sage: a % 7^2 0 sage: b = K(1/7) sage: b.residue() Traceback (most recent call last): ... ValueError: element must have non-negative valuation in order to compute residue.
See also
_mod_()
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicCoercion_CR_frac_field
¶ Bases:
sage.rings.morphism.RingHomomorphism_coercion
The canonical inclusion of Zq into its fraction field.
EXAMPLES:
sage: R.<a> = ZqCR(27, implementation='FLINT') sage: K = R.fraction_field() sage: K.coerce_map_from(R) Ring Coercion morphism: From: Unramified Extension of 3-adic Ring with capped relative precision 20 in a defined by (1 + O(3^20))*x^3 + (O(3^20))*x^2 + (2 + O(3^20))*x + (1 + O(3^20)) To: Unramified Extension of 3-adic Field with capped relative precision 20 in a defined by (1 + O(3^20))*x^3 + (O(3^20))*x^2 + (2 + O(3^20))*x + (1 + O(3^20))
-
is_injective
()¶ Return whether this map is injective.
EXAMPLES:
sage: R.<a> = ZqCR(9, implementation='FLINT') sage: K = R.fraction_field() sage: f = K.coerce_map_from(R) sage: f.is_injective() True
-
is_surjective
()¶ Return whether this map is injective.
EXAMPLES:
sage: R.<a> = ZqCR(9, implementation='FLINT') sage: K = R.fraction_field() sage: f = K.coerce_map_from(R) sage: f.is_surjective() False
-
section
()¶ Returns a map back to the ring that converts elements of non-negative valuation.
EXAMPLES:
sage: R.<a> = ZqCR(27, implementation='FLINT') sage: K = R.fraction_field() sage: f = K.coerce_map_from(R) sage: f(K.gen()) a + O(3^20)
-
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicCoercion_QQ_CR
¶ Bases:
sage.rings.morphism.RingHomomorphism_coercion
The canonical inclusion from the rationals to a capped relative field.
EXAMPLES:
sage: f = Qp(5).coerce_map_from(QQ); f Ring Coercion morphism: From: Rational Field To: 5-adic Field with capped relative precision 20
-
section
()¶ Returns a map back to the rationals that approximates an element by a rational number.
EXAMPLES:
sage: f = Qp(5).coerce_map_from(QQ).section() sage: f(Qp(5)(1/4)) 1/4 sage: f(Qp(5)(1/5)) 1/5
-
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicCoercion_ZZ_CR
¶ Bases:
sage.rings.morphism.RingHomomorphism_coercion
The canonical inclusion from the integer ring to a capped relative ring.
EXAMPLES:
sage: f = Zp(5).coerce_map_from(ZZ); f Ring Coercion morphism: From: Integer Ring To: 5-adic Ring with capped relative precision 20
-
section
()¶ Returns a map back to the ring of integers that approximates an element by an integer.
EXAMPLES:
sage: f = Zp(5).coerce_map_from(ZZ).section() sage: f(Zp(5)(-1)) - 5^20 -1
-
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicConvert_CR_QQ
¶ Bases:
sage.rings.morphism.RingMap
The map from the capped relative ring back to the rationals that returns a rational approximation of its input.
EXAMPLES:
sage: f = Qp(5).coerce_map_from(QQ).section(); f Set-theoretic ring morphism: From: 5-adic Field with capped relative precision 20 To: Rational Field
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicConvert_CR_ZZ
¶ Bases:
sage.rings.morphism.RingMap
The map from a capped relative ring back to the ring of integers that returns the smallest non-negative integer approximation to its input which is accurate up to the precision.
Raises a
ValueError
, if the input is not in the closure of the image of the integers.EXAMPLES:
sage: f = Zp(5).coerce_map_from(ZZ).section(); f Set-theoretic ring morphism: From: 5-adic Ring with capped relative precision 20 To: Integer Ring
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicConvert_CR_frac_field
¶ Bases:
sage.categories.morphism.Morphism
The section of the inclusion from \(\ZZ_q`\) to its fraction field.
EXAMPLES:
sage: R.<a> = ZqCR(27, implementation='FLINT') sage: K = R.fraction_field() sage: f = R.convert_map_from(K); f Generic morphism: From: Unramified Extension of 3-adic Field with capped relative precision 20 in a defined by (1 + O(3^20))*x^3 + (O(3^20))*x^2 + (2 + O(3^20))*x + (1 + O(3^20)) To: Unramified Extension of 3-adic Ring with capped relative precision 20 in a defined by (1 + O(3^20))*x^3 + (O(3^20))*x^2 + (2 + O(3^20))*x + (1 + O(3^20))
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicConvert_QQ_CR
¶ Bases:
sage.categories.morphism.Morphism
The inclusion map from the rationals to a capped relative ring that is defined on all elements with non-negative \(p\)-adic valuation.
EXAMPLES:
sage: f = Zp(5).convert_map_from(QQ); f Generic morphism: From: Rational Field To: 5-adic Ring with capped relative precision 20
-
section
()¶ Returns the map back to the rationals that returns the smallest non-negative integer approximation to its input which is accurate up to the precision.
EXAMPLES:
sage: f = Zp(5,4).convert_map_from(QQ).section() sage: f(Zp(5,4)(-1)) -1
-
-
class
sage.rings.padics.padic_capped_relative_element.
pAdicTemplateElement
¶ Bases:
sage.rings.padics.padic_generic_element.pAdicGenericElement
A class for common functionality among the \(p\)-adic template classes.
INPUT:
parent
– a local ring or fieldx
– data defining this element. Various types are supported, including ints, Integers, Rationals, PARI p-adics, integers mod \(p^k\) and other Sage p-adics.absprec
– a cap on the absolute precision of this elementrelprec
– a cap on the relative precision of this element
EXAMPLES:
sage: Zp(17)(17^3, 8, 4) 17^3 + O(17^7)
-
lift_to_precision
(absprec=None)¶ Returns another element of the same parent with absolute precision at least
absprec
, congruent to this \(p\)-adic element modulo the precision of this element.INPUT:
absprec
– an integer orNone
(default:None
), the absolute precision of the result. IfNone
, lifts to the maximum precision allowed.
Note
If setting
absprec
that high would violate the precision cap, raises a precision error. Note that the new digits will not necessarily be zero.EXAMPLES:
sage: R = ZpCA(17) sage: R(-1,2).lift_to_precision(10) 16 + 16*17 + O(17^10) sage: R(1,15).lift_to_precision(10) 1 + O(17^15) sage: R(1,15).lift_to_precision(30) Traceback (most recent call last): ... PrecisionError: Precision higher than allowed by the precision cap. sage: R(-1,2).lift_to_precision().precision_absolute() == R.precision_cap() True sage: R = Zp(5); c = R(17,3); c.lift_to_precision(8) 2 + 3*5 + O(5^8) sage: c.lift_to_precision().precision_relative() == R.precision_cap() True
Fixed modulus elements don’t raise errors:
sage: R = ZpFM(5); a = R(5); a.lift_to_precision(7) 5 + O(5^20) sage: a.lift_to_precision(10000) 5 + O(5^20)
-
padded_list
(n, lift_mode='simple')¶ Returns a list of coefficients of the uniformizer \(\pi\) starting with \(\pi^0\) up to \(\pi^n\) exclusive (padded with zeros if needed).
For a field element of valuation \(v\), starts at \(\pi^v\) instead.
INPUT:
n
- an integerlift_mode
- ‘simple’, ‘smallest’ or ‘teichmuller’
EXAMPLES:
sage: R = Zp(7,4,'capped-abs'); a = R(2*7+7**2); a.padded_list(5) [0, 2, 1, 0, 0] sage: R = Zp(7,4,'fixed-mod'); a = R(2*7+7**2); a.padded_list(5) [0, 2, 1, 0, 0]
For elements with positive valuation, this function will return a list with leading 0s if the parent is not a field:
sage: R = Zp(7,3,'capped-rel'); a = R(2*7+7**2); a.padded_list(5) [0, 2, 1, 0, 0] sage: R = Qp(7,3); a = R(2*7+7**2); a.padded_list(5) [2, 1, 0, 0] sage: a.padded_list(3) [2, 1]
-
residue
(absprec=1)¶ Reduce this element modulo \(p^\mathrm{absprec}\).
INPUT:
absprec
–0
or1
.
OUTPUT:
This element reduced modulo \(p^\mathrm{absprec}\) as an element of the residue field or the null ring.
EXAMPLES:
sage: R.<a> = ZqFM(27, 4) sage: (3 + 3*a).residue() 0 sage: (a + 1).residue() a0 + 1
-
unit_part
()¶ Returns the unit part of this element.
This is the \(p\)-adic element \(u\) in the same ring so that this element is \(\pi^v u\), where \(\pi\) is a uniformizer and \(v\) is the valuation of this element.
-
sage.rings.padics.padic_capped_relative_element.
unpickle_cre_v2
(cls, parent, unit, ordp, relprec)¶ Unpickles a capped relative element.
EXAMPLES:
sage: from sage.rings.padics.padic_capped_relative_element import unpickle_cre_v2 sage: R = Zp(5); a = R(85,6) sage: b = unpickle_cre_v2(a.__class__, R, 17, 1, 5) sage: a == b True sage: a.precision_relative() == b.precision_relative() True
-
sage.rings.padics.padic_capped_relative_element.
unpickle_pcre_v1
(R, unit, ordp, relprec)¶ Unpickles a capped relative element.
EXAMPLES:
sage: from sage.rings.padics.padic_capped_relative_element import unpickle_pcre_v1 sage: R = Zp(5) sage: a = unpickle_pcre_v1(R, 17, 2, 5); a 2*5^2 + 3*5^3 + O(5^7)