P-Adic numbers, basic: Difference between revisions
Content added Content deleted
m (Changed a comment.) |
(Replaced "sw" as integer by a boolean.) |
||
Line 1,308: | Line 1,308: | ||
=={{header|Nim}}== |
=={{header|Nim}}== |
||
{{trans|Go}} |
{{trans|Go}} |
||
Translation of Go with some modifications, especially using exceptions when an error |
Translation of Go with some modifications, especially using exceptions when an error is encountered. |
||
<lang Nim>import math, strformat |
<lang Nim>import math, strformat |
||
Line 1,330: | Line 1,330: | ||
proc r2pa(pa: var Padic; q: Ratio; sw: |
proc r2pa(pa: var Padic; q: Ratio; sw: bool) = |
||
## Convert "q" to p-adic number, set "sw" to print. |
## Convert "q" to p-adic number, set "sw" to print. |
||
Line 1,348: | Line 1,348: | ||
pa.p = min(pa.p, PMax) # Maximum short prime. |
pa.p = min(pa.p, PMax) # Maximum short prime. |
||
pa.k = min(pa.k, Emx - 1) # Maximum array length. |
pa.k = min(pa.k, Emx - 1) # Maximum array length. |
||
if sw != 0: |
|||
echo &"{a}/{b} + 0({pa.p}^{pa.k})" |
if sw: echo &"{a}/{b} + 0({pa.p}^{pa.k})" |
||
# Initialize. |
# Initialize. |
||
Line 1,526: | Line 1,526: | ||
try: |
try: |
||
var a, b = Padic(p: d[2], k: d[3]) |
var a, b = Padic(p: d[2], k: d[3]) |
||
r2pa(a, (d[0], d[1]), |
r2pa(a, (d[0], d[1]), true) |
||
print(a, 0) |
print(a, 0) |
||
r2pa(b, (d[4], d[5]), |
r2pa(b, (d[4], d[5]), true) |
||
print(b, 0) |
print(b, 0) |
||
echo "+ =" |
echo "+ =" |