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 occurs.
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: int) =
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]), 1)
r2pa(a, (d[0], d[1]), true)
print(a, 0)
print(a, 0)
r2pa(b, (d[4], d[5]), 1)
r2pa(b, (d[4], d[5]), true)
print(b, 0)
print(b, 0)
echo "+ ="
echo "+ ="