0

我想将 Pari/GP p-adic 数的元素提取到向量中。即,如果这是我的 p 进数:

O(5^8)+1/3
> 2 + 3*5 + 5^2 + 3*5^3 + 5^4 + 3*5^5 + 5^6 + 3*5^7 + O(5^8)

我希望能够提取这样的向量:

[2,3,1,3,1,3,1,3]

有没有直接的方法可以做到这一点,还是我必须编写自己的函数?

4

2 回答 2

4

PARI/GP 没有内置函数来选择 p-adic 展开的第 i 个分量。你可以自己定义:

padic_comp(x, i) =  truncate(lift(Mod(x, x.p^(i+1))) / x.p^i)

注意,x是 t_PADIC 类型,并且i > 0是整数 st x.p^i < x.mod

因此,对于您的示例,可以轻松获得向量:

x = 1/3 + O(5^8)
vector(8, i, padic_comp(x, i-1))
> [2, 3, 1, 3, 1, 3, 1, 3]
于 2020-05-21T01:08:17.280 回答
3

或者,您可以lift将其设置为整数并使用该digits函数来获取数字 - 然后需要将其反转:

 Vecrev(digits(lift(O(5^8)+1/3), 5))
于 2020-05-21T15:52:16.453 回答