mpzjs
Version:
Arbitrary-precision integer arithmetic using libgmp
49 lines (42 loc) • 1.64 kB
JavaScript
const MPZ = require('../');
test('abs', () => {
expect(
MPZ(
'433593290010590489671135819286259593426549306666324008679782084292'
+ '2446494189019075159822930571858728009485237489829138626896756141'
+ '8738958337632249177044975686477011571044266'
).abs().toString()
).toBe(
'4335932900105904896711358192862595934265493066663240086797820842922446'
+ '49418901907515982293057185872800948523748982913862689675614187389583'
+ '37632249177044975686477011571044266'
);
expect(
MPZ(
'-43359329001059048967113581928625959342654930666632400867978208429'
+ '2244649418901907515982293057185872800948523748982913862689675614'
+ '18738958337632249177044975686477011571044266'
).abs().toString()
).toBe(
'4335932900105904896711358192862595934265493066663240086797820842922446'
+ '49418901907515982293057185872800948523748982913862689675614187389583'
+ '37632249177044975686477011571044266'
);
const result = MPZ();
MPZ.abs(result, MPZ('4353425435243652'));
expect(result.toString()).toBe('4353425435243652');
MPZ.abs(result, MPZ('-4353425435243652'));
expect(result.toString()).toBe('4353425435243652');
MPZ.abs(result, 4353425435243652);
expect(result.toString()).toBe('4353425435243652');
MPZ.abs(result, -4353425435243652);
expect(result.toString()).toBe('4353425435243652');
});
test('abs exceptions', () => {
expect(() => {
MPZ.abs(1);
}).toThrow();
expect(() => {
MPZ.abs(MPZ(1));
}).toThrow();
});