P-Adic numbers, basic: Difference between revisions
m
Improved coding.
m (Improved coding.) |
m (Improved coding.) |
||
Line 1,686:
=={{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.
<syntaxhighlight lang="java">
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public final class PAdicNumbersBasic {
Line 1,814 ⟶ 1,819:
// Zero
if ( numbers.isEmpty() || allZeroDigits(numbers) ) {
return new Rational(0, 1);
}
Line 1,867 ⟶ 1,872:
* Return a string representation of this p-adic.
*/
public String toString() {
List<Integer> numbers = new ArrayList<Integer>(digits);
Collections.reverse(numbers);
String numberString = numbers.stream().map(String::valueOf).collect(Collectors.joining());
▲ padWithZeros(digits);
StringBuilder builder = new StringBuilder(numberString);▼
▲ StringBuilder builder = new StringBuilder();
if ( order >= 0 ) {
Line 1,889 ⟶ 1,890:
}
return " ..." + builder.toString().substring(builder.length() - PRECISION - 2);
}
Line 1,904 ⟶ 1,905:
prime = aPrime;
digits = new ArrayList<Integer>(aDigits);
order = aOrder;
}
Line 1,925:
*/
private void negateList(List<Integer> aDigits) {
aDigits.set(0, Math.floorMod(
for ( int i = 1; i < aDigits.size(); i++ ) {
aDigits.set(i, prime - 1 - aDigits.get(i));
Line 1,956:
*/
private static void padWithZeros(List<Integer> aList) {
while ( aList.size() <
aList.addLast(0);
}
Line 2,024:
<pre>
3-adic numbers:
-5 / 9 => ...
47 / 12 => ...
sum => ...
Rational = 121 / 36
7-adic numbers:
5 / 8 => ...
353 / 30809 => ...
sum => ...
Rational = 156869 / 246472
</pre>
|