Matematicheskiye_obosnovani.../lab1/math.test.js
2025-01-29 16:04:11 +03:00

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());
}
}
}