27 lines
1.0 KiB
JavaScript
27 lines
1.0 KiB
JavaScript
/**
|
|
* @import { Radix } from "./num.js"
|
|
*/
|
|
import { Num, add, sub } from "./index.js"
|
|
|
|
/**
|
|
* @param { number } number
|
|
* @param { number } radix
|
|
* @param { string } prefix
|
|
*/
|
|
function stringify(number, radix, prefix) {
|
|
return (Math.sign(number) === -1 ? "-" : "") + prefix + Math.abs(number).toString(radix).toUpperCase();
|
|
}
|
|
|
|
for (const [radix, prefix] of /**@type { [radix: Radix, prefix: string][]}*/([[2, "0b"], [8, "0o"], [16, "0x"], [10, ""]])) {
|
|
for (let i = 0; i < 0xFFF; i++) {
|
|
for (let j = 0; j < 0xFFF; j++) {
|
|
const a1 = Num.parse(`${prefix}${i.toString(radix)}`);
|
|
const a2 = a1.copy();
|
|
const b = Num.parse(`${prefix}${j.toString(radix)}`);
|
|
add(a1, b);
|
|
sub(a2, b);
|
|
console.assert(a1.toString() === stringify(i + j, radix, prefix), i, j, stringify(i + j, radix, prefix), a1.toString());
|
|
console.assert(a2.toString() === stringify(i - j, radix, prefix), i, j, stringify(i - j, radix, prefix), a2.toString());
|
|
}
|
|
}
|
|
} |