P-Adic numbers, basic: Difference between revisions

Content added Content deleted
m (Improved code.)
m (Improbved code.)
 
Line 1,688: Line 1,688:


=={{header|Java}}==
=={{header|Java}}==
This example displays p-adic numbers in standard mathematical format, consisting of a possibly infinite list of digits extending leftwards from the p-adic point. p-adic numbers are given correct to O(prime^40) and the rational reconstruction is correct to O(prime^20).
This example displays p-adic numbers in standard mathematical format, consisting of a possibly infinite list of digits extending leftwards from the p-adic point. p-adic numbers are given correct to O(prime^40) and the rational reconstruction is correct to O(prime^20).
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
import java.util.ArrayList;
import java.util.ArrayList;
Line 1,876: Line 1,876:
public String toString() {
public String toString() {
List<Integer> numbers = new ArrayList<Integer>(digits);
List<Integer> numbers = new ArrayList<Integer>(digits);
Collections.reverse(numbers);
padWithZeros(numbers);
padWithZeros(numbers);
Collections.reverse(numbers);
String numberString = numbers.stream().map(String::valueOf).collect(Collectors.joining());
String numberString = numbers.stream().map(String::valueOf).collect(Collectors.joining());
StringBuilder builder = new StringBuilder(numberString);
StringBuilder builder = new StringBuilder(numberString);
Line 1,884: Line 1,884:
for ( int i = 0; i < order; i++ ) {
for ( int i = 0; i < order; i++ ) {
builder.append("0");
builder.append("0");
builder.deleteCharAt(0);
}
}
Line 1,890: Line 1,889:
} else {
} else {
builder.insert(builder.length() + order, ".");
builder.insert(builder.length() + order, ".");
while ( builder.toString().endsWith("0") ) {
builder.deleteCharAt(builder.length() - 1);
}
}
}
return " ..." + builder.toString().substring(builder.length() - PRECISION - 2);
return " ..." + builder.toString().substring(builder.length() - PRECISION - 1);
}
}
Line 2,026: Line 2,029:
<pre>
<pre>
3-adic numbers:
3-adic numbers:
-5 / 9 => ...2222222222222222222222222222222222222222222.11
-5 / 9 => ...22222222222222222222222222222222222222.11
47 / 12 => ...20202020202020202020202020202020202020202101.2
47 / 12 => ...020202020202020202020202020202020202101.2
sum => ...0202020202020202020202020202020202020202101.01
sum => ...20202020202020202020202020202020202101.01
Rational = 121 / 36
Rational = 121 / 36


7-adic numbers:
7-adic numbers:
5 / 8 => ...424242424242424242424242424242424242424242425.0
5 / 8 => ...424242424242424242424242424242424242425.0
353 / 30809 => ...665231560462505550343461155520004023663643455.0
353 / 30809 => ...560462505550343461155520004023663643455.0
sum => ...422504315035233123101033613062431266421216213.0
sum => ...315035233123101033613062431266421216213.0
Rational = 156869 / 246472
Rational = 156869 / 246472
</pre>
</pre>