P-Adic square roots: Difference between revisions

→‎{{header|Wren}}: Updated in line with changes to FB example.
mNo edit summary
(→‎{{header|Wren}}: Updated in line with changes to FB example.)
Line 643:
if (P < 2 || K < 1) return 1
P = Math.min(P, PMAX) // maximum short prime
K = Math.min(K, EMX-1) // maximum array length
if (sw != 0) {
System.write("%(a)/%(b) + ") // numerator, denominator
Line 671 ⟶ 670:
return -1
}
K = Math.min(K + _v, EMX-1) - _v // maximum array length
_v = (_v/2).truncate
 
if (a.abs > AMX || b > AMX) return -1
var bb = BigInt.new(b) // to avoid overflowing 'f(x) = b * x * x – a'
Line 725 ⟶ 726:
pk = 4
i = _v + 2
while (i <= K - 1 + _v) {
pk = pk * 2
f = bb * x * x - a
Line 744 ⟶ 745:
pk = 1
i = _v + 1
while (i <= K - 1 + _v) {
pk = pk * P
f = bb * x * x - a
Line 756 ⟶ 757:
}
}
K = i - _v
if (sw != 0) System.print("lift: %(x) mod %(P)^%(K)")
return 0
Line 767 ⟶ 768:
var s = 0
var pk = 1
for (i in t..K-1+t_v) {
P1 = pk
pk = pk * P
Line 885 ⟶ 886:
[17, 1, 2, 9],
[497, 10496, 2, 18],
[10496, 497, 2, 2719],
[3141, 5926, 3, 1715],
[2718, 281, 3, 1513],
[-1, 1, 5, 8],
[86, 25, 5, 8],
[2150, 1, 5, 108],
[2,1, 7, 8],
[-2645, 28518, 7, 9],
Line 959 ⟶ 960:
 
497/10496 + 0(2^18)
lift: 35513392989 mod 2^18
sqrt +/-
...0 1 0 1 1 0 1 0 1 1 0 0 1 1. 1 1 0 1
Line 967 ⟶ 968:
497/10496
 
10496/497 + 0(2^2719)
lift: 3818517148501 mod 2^2719
sqrt +/-
...0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0
...1 0 0 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0
sqrt^2
1 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0
10496/497
 
3141/5926 + 0(3^1715)
lift: 3406966 mod 3^1715
sqrt +/-
...0 0 2 0 1 0 2 0 0 2 1 1 0 2 2 1 0
...2 2 0 2 1 2 0 2 2 0 1 1 2 0 0 2 0
sqrt^2
2 1 2 1 1 1 2 2 0 0 0 2 0 1 1 0 0
3141/5926
 
2718/281 + 0(3^1513)
lift: 3882001693355 mod 3^1513
sqrt +/-
...2 1 0 2 2 0 2 0 0 0 2 2 1 1 0
...0 1 2 0 0 2 0 2 2 2 0 0 1 2 0
sqrt^2
0 0 2 2 0 0 1 2 2 0 2 2 1 0 0
2718/281
 
Line 1,004 ⟶ 1,005:
 
86/25 + 0(5^8)
lift: 48615695531 mod 5^8
sqrt +/-
...1 1 0 2 4 1 1. 1
Line 1,012 ⟶ 1,013:
86/25
 
2150/1 + 0(5^108)
lift: 48615695531 mod 5^108
sqrt +/-
...1 1 1 0 2 4 1 1 1 0
...3 3 3 4 2 0 3 3 4 0
sqrt^2
0 0 0 0 0 3 2 1 0 0
2150
 
Line 1,031 ⟶ 1,032:
 
-2645/28518 + 0(7^9)
lift: 28120416939082527 mod 7^9
sqrt +/-
...6 5 3 1 2 4 1 4. 1
9,477

edits