mpzjs
Version:
Arbitrary-precision integer arithmetic using libgmp
36 lines (28 loc) • 1.11 kB
JavaScript
const MPZ = require('../');
test('invert', () => {
// numbers from http://www.itl.nist.gov/fipspubs/fip186.htm appendix 5
const q = MPZ('b20db0b101df0c6624fc1392ba55f77d577481e5', 16);
const k = MPZ('79577ddcaafddc038b865b19f8eb1ada8a2838c6', 16);
expect(k.invert(q).toString(16))
.toBe('2784e3d672d972a74e22c67f4f4f726ecc751efa');
expect(k.invert(1016505658889014629900729618210002584918553821669n).toString(16))
.toBe('2784e3d672d972a74e22c67f4f4f726ecc751efa');
const result = MPZ();
MPZ.invert(result, k, q);
expect(result.toString(16))
.toBe('2784e3d672d972a74e22c67f4f4f726ecc751efa');
MPZ.invert(result, 692739012227105812082439949966529529336373459142n, 1016505658889014629900729618210002584918553821669n);
expect(result.toString(16))
.toBe('2784e3d672d972a74e22c67f4f4f726ecc751efa');
});
test('invert exceptions', () => {
expect(() => {
MPZ.invert(1, 2, 3);
}).toThrow();
expect(() => {
MPZ.invert(MPZ(1));
}).toThrow();
expect(() => {
MPZ.invert(MPZ(1), 2);
}).toThrow();
});