var count = (function abs(Big) {
var start = +new Date(),
log,
error,
passed = 0,
total = 0;
if (typeof window === 'undefined') {
log = console.log;
error = console.error;
} else {
log = function (str) { document.body.innerHTML += str.replace('\n', '
') };
error = function (str) { document.body.innerHTML += '
' +
str.replace('\n', '
') + '
' };
}
if (!Big && typeof require === 'function') Big = require('../big');
function assert(expected, actual) {
total++;
if (expected !== actual) {
error('\n Test number: ' + total + ' failed');
error(' Expected: ' + expected);
error(' Actual: ' + actual);
//process.exit();
}
else {
passed++;
//log('\n Expected and actual: ' + actual);
}
}
function T(expected, value){
assert(String(expected), new Big(String(value)).abs().toString());
}
log('\n Testing abs...');
Big.DP = 20;
Big.RM = 1;
T(1, 1);
T(1, -1);
T(0.5, '0.5');
T(0.5, '-0.5');
T(0.1, 0.1);
T(0.1, -0.1);
T(1.1, 1.1);
T(1.1, -1.1);
T(1.5, '1.5');
T(1.5, '-1.5');
T(0.00001, '-1e-5');
T(9000000000, '-9e9');
T(123456.7891011, -123456.7891011);
T(999.999, '-999.999');
T(99, 99);
T(1, new Big(-1));
T(0.001, new Big(0.001));
T(0.001, new Big('-0.001'));
T(0, 0);
T(0, -0);
var minusZero = 1 / (-1 / 0);
function isMinusZero(n) {
return n.toString() === '0' && n.s == -1;
}
T(0, 0);
T(0, -0);
T(0, minusZero);
assert(true, isMinusZero(new Big('-0')));
assert(true, isMinusZero(new Big(minusZero)));
assert(false, isMinusZero(new Big(-0).abs()));
assert(false, isMinusZero(new Big(minusZero).abs()));
assert(true, !isMinusZero(new Big('-0').abs()));
assert(true, !isMinusZero(new Big(minusZero).abs()));
T(Number.MIN_VALUE, Number.MIN_VALUE);
T(Number.MIN_VALUE, -Number.MIN_VALUE);
T(Number.MAX_VALUE, Number.MAX_VALUE);
T(Number.MAX_VALUE, -Number.MAX_VALUE);
var two_30 = 1 << 30;
T(two_30, two_30);
T(two_30, -two_30);
T(two_30 + 1, two_30 + 1);
T(two_30 + 1, -two_30 - 1);
T(two_30 - 1, two_30 - 1);
T(two_30 - 1, -two_30 + 1);
var two_31 = 2 * two_30;
T(two_31, two_31);
T(two_31, -two_31);
T(two_31 + 1, two_31 + 1);
T(two_31 + 1, -two_31 - 1);
T(two_31 - 1, two_31 - 1);
T(two_31 - 1, -two_31 + 1);
T('0', '0');
T('1', '-1');
T('11.121', '11.121');
T('0.023842', '-0.023842');
T('1.19', '-1.19');
T('9.622e-11', '-0.00000000009622');
T('5.09e-10', '-0.000000000509');
T('3838.2', '3838.2');
T('127', '127.0');
T('4.23073', '4.23073');
T('2.5469', '-2.5469');
T('29949', '-29949');
T('277.1', '-277.10');
T('4.97898e-15', '-0.00000000000000497898');
T('53.456', '53.456');
T('100564', '-100564');
T('12431.9', '-12431.9');
T('97633.7', '-97633.7');
T('220', '220');
T('188.67', '-188.67');
T('35', '-35');
T('2.6', '-2.6');
T('2.2e-19', '-0.000000000000000000220');
T('1.469', '-1.469');
T('150.7', '-150.7');
T('74', '-74');
T('3.52e-9', '-0.00000000352');
T('2221.7', '-2221.7');
T('0.000004211', '-0.000004211');
T('1', '-1');
T('5.886', '-5.886');
T('16', '16');
T('4.4493e-9', '0.0000000044493');
T('47.6', '47.6');
T('1.6', '-1.60');
T('1', '-1');
T('1.5', '-1.5');
T('5', '-5');
T('1', '-1');
T('8027', '8027');
T('6.36e-16', '-0.000000000000000636');
T('3.87766', '3.87766');
T('7.4', '-7.4');
T('4.449', '-4.449');
T('5.2218e-19', '-0.000000000000000000522180');
T('1.3769e-11', '-0.000000000013769');
T('7.898e-13', '-0.0000000000007898');
T('522.9', '-522.9');
T('16.1', '-16.1');
T('2.15', '2.15');
T('4.3', '4.3');
T('3', '-3');
T('2.8', '-2.8');
T('1', '-1');
T('0.0000128696', '-0.0000128696');
T('13.33', '-13.33');
T('0.00000132177', '-0.00000132177');
T('1.41516', '-1.41516');
T('180.4', '-180.4');
T('115079', '-115079');
T('959', '959');
T('714.4', '714.4');
T('1.4544', '1.4544');
T('53.691', '53.691');
T('2.03832e-12', '-0.00000000000203832');
T('1', '-1');
T('10.8', '10.8');
T('6189.2', '-6189.2');
T('6.30866', '6.30866');
T('62306', '62306');
T('4', '-4.0');
T('997.1', '-997.1');
T('27.4', '-27.40');
T('9242', '9242');
T('31.1', '-31.1');
T('23.4', '23.4');
T('451818', '-451818');
T('7', '-7');
T('1.9', '-1.9');
T('2', '-2');
T('112.983', '-112.983');
T('9.36e-8', '-0.0000000936');
T('12.8515', '12.8515');
T('73.1', '-73.1');
T('18.15', '18.150');
T('11997.8', '11997.8');
T('23.1', '-23.1');
T('82.022', '-82.022');
T('3.916e-20', '-0.00000000000000000003916');
T('3.3', '-3.3');
T('892.1', '-892.1');
T('24.4', '24.4');
T('72', '72.0');
T('0.0013346', '0.0013346');
T('10.4', '-10.4');
T('367.5', '367.5');
T('7', '-7');
T('127.195', '127.195');
T('7.89e-13', '-0.000000000000789');
T('63', '-63');
T('85821.2', '-85821.2');
T('95.6', '95.6');
T('8.9e-14', '-0.000000000000089');
T('112.1', '-112.1');
T('3.68', '-3.68');
T('9', '-9');
T('0.0000975', '-0.0000975');
T('393.6', '-393.6');
T('7.4', '-7.4');
T('69.62', '-69.62');
T('5201.3', '5201.3');
T('163', '163');
T('4.30732', '4.30732');
T('224.49', '-224.49');
T('319.8', '-319.8');
T('88.1', '-88.1');
T('2.7762e-8', '0.000000027762');
T('2.043e-7', '-0.0000002043');
T('75459.3', '-75459.3');
T('0.178', '0.178');
T('0.00001633', '0.00001633');
T('955', '955');
T('373898', '-373898');
T('9780.1', '9780.1');
T('503.47', '503.47');
T('3.44562', '-3.44562');
T('1.6', '-1.6');
T('1.22442', '-1.22442');
T('1.4', '1.4');
T('1219.1', '-1219.1');
T('2.7', '-2.7');
T('1057', '-1057');
T('1938', '1938');
T('1.1983', '1.1983');
T('0.0012', '-0.0012');
T('95.713', '-95.713');
T('2', '-2');
T('17.24', '-17.24');
T('10.3', '-10.3');
T('1', '-1');
T('65.8', '-65.8');
T('2.9', '2.9');
T('54149', '54149');
T('8', '-8');
T('1', '1.0');
T('4', '-4');
T('6.3', '-6.3');
T('5.25e-9', '0.00000000525');
T('52.3', '-52.3');
T('75290', '-75290');
T('5.9', '-5.9');
T('13.7', '13.7');
T('2.3982e-9', '0.0000000023982');
T('91.5', '-91.50');
T('2072.39', '2072.39');
T('385.6', '385.6');
T('4.77', '4.77');
T('18.72', '18.720');
T('2817', '-2817');
T('44535', '-44535');
T('655', '655');
T('2e-15', '-0.0000000000000020');
T('0.625', '0.6250');
T('2', '-2');
T('5.315', '5.315');
T('70.9', '70.90');
T('6.4', '6.4');
T('1824', '1824');
T('52.595', '52.595');
T('3662', '3662.0');
T('3.1', '3.1');
T('1.05032e-7', '0.000000105032');
T('997.063', '-997.063');
T('41746', '-41746');
T('24.0402', '24.0402');
T('0.009135', '0.009135');
T('2.34e-9', '-0.00000000234');
T('13.1', '13.1');
T('228.8', '228.8');
T('565.85', '565.85');
T('4e-20', '0.000000000000000000040');
T('1.73', '1.73');
T('38.9', '38.9');
T('1.02e-14', '-0.0000000000000102');
T('302.8', '-302.8');
T('7', '-7');
T('1', '-1');
T('0.00247', '0.00247');
T('2', '-2');
T('3.26', '-3.26');
T('8.8', '8.8');
T('90.6', '90.6');
T('8.3053e-17', '-0.000000000000000083053');
T('2.5', '-2.5');
T('376.2', '-376.2');
T('1.29', '1.29');
T('1.379', '-1.379');
T('40921.5', '-40921.5');
T('1', '-1');
T('12.5', '12.5');
T('10.1', '10.1');
T('1', '-1');
T('226636', '226636');
T('1', '-1');
T('1.7', '-1.7');
T('31.31', '31.31');
T('79.9', '-79.9');
T('4.027e-13', '0.0000000000004027');
T('43.838', '43.838');
T('6.47', '-6.47');
T('5.292e-19', '0.0000000000000000005292');
T('4.6', '-4.6');
T('15918', '-15918.0');
T('239.45', '239.45');
T('1.02', '-1.02');
T('14101', '-14101');
T('7', '-7');
T('367.34', '367.34');
T('5', '-5');
T('19.9', '-19.9');
T('269.45', '-269.45');
T('10.34', '-10.34');
T('3.32882e-12', '-0.00000000000332882');
T('5.9', '5.9');
T('9', '-9.0');
T('1.3597', '-1.3597');
T('8', '8.0');
T('1', '1.0');
T('312.5', '312.5');
T('1.554', '-1.554');
T('210.985', '-210.985');
T('1', '-1');
T('1.24', '-1.24');
T('513865', '-513865');
T('6748', '-6748');
T('591.51', '-591.51');
T('2.2', '-2.2');
T('19.5495', '19.5495');
T('3.3', '3.3');
T('30', '-30');
T('94', '-94');
T('217.55', '217.55');
T('2', '-2');
T('99', '99');
T('4.067', '-4.067');
T('702.57', '702.57');
T('3.7', '-3.70');
T('4', '4.0');
T('192944', '192944');
T('0.000022', '0.000022');
T('47.6', '47.60');
T('0.391', '0.3910');
T('35', '-35');
T('100', '-100');
T('3.3', '-3.3');
T('32.432', '32.432');
T('1.07849e-18', '0.00000000000000000107849');
T('2', '-2.0');
T('23.27', '23.27');
T('4.054e-15', '-0.000000000000004054');
T('7.6', '-7.6');
T('1305', '1305');
T('1.501', '-1.501');
T('3.4', '3.4');
T('22.5', '-22.5');
T('1.0916', '1.0916');
T('2', '-2');
T('58.271', '58.271');
T('1.73e-12', '0.00000000000173');
T('1.3458e-15', '0.0000000000000013458');
T('309.87', '-309.87');
T('5.318', '-5.318');
T('1.5302e-8', '0.000000015302');
T('596765', '596765');
T('54.42', '-54.42');
T('6.549e-20', '0.00000000000000000006549');
T('29', '29');
T('46.025', '46.025');
T('2556.78', '-2556.78');
T('0.00287721', '0.00287721');
T('1.63', '-1.63');
T('0.00041', '0.00041');
T('698', '698');
T('134.4', '134.4');
T('2.1', '2.1');
T('2.07', '-2.07');
T('122.869', '122.869');
T('0.00017', '-0.00017');
T('18.6', '18.6');
T('7', '-7');
T('0.0180557', '0.0180557');
T('5', '-5');
T('6.2', '-6.2');
T('8', '-8');
T('450.96', '-450.96');
T('20.2', '-20.2');
T('176.52', '176.52');
T('0.00017', '-0.000170');
T('5', '-5');
T('1', '-1');
T('1.37856e-14', '0.0000000000000137856');
T('76.3048', '76.3048');
T('1803.7', '-1803.7');
T('74', '74');
T('1.7e-12', '0.0000000000017');
T('48.7', '-48.7');
T('4.48', '-4.48');
T('1.4', '-1.4');
T('7.69', '-7.69');
T('23.5987', '23.5987');
T('3074', '3074.0');
T('8.06e-15', '-0.00000000000000806');
T('21.3757', '-21.3757');
T('35', '35');
T('11.056', '11.0560');
T('3.36e-14', '-0.0000000000000336');
T('49139.4', '-49139.4');
T('32.654', '-32.654');
T('34035.4', '34035.4');
T('15.22', '15.22');
T('62', '62.0');
T('8.89156', '-8.89156');
T('14', '14');
T('0.006', '-0.0060');
T('1.5', '1.5');
T('7', '-7');
T('1.6e-11', '0.000000000016');
T('26.6427', '26.6427');
T('1.5e-18', '-0.0000000000000000015');
T('1.52838e-15', '0.00000000000000152838');
T('119.1', '119.1');
T('0.004283', '0.004283');
T('818', '-818');
T('194', '194');
T('104.788', '-104.788');
T('3.74e-11', '0.0000000000374');
T('6.162', '-6.162');
T('5.19214e-18', '-0.00000000000000000519214');
T('1.4', '-1.4');
T('1.27', '-1.27');
T('7.83822e-12', '-0.00000000000783822');
T('1', '-1');
T('4.4', '4.4');
T('7.37382e-12', '0.00000000000737382');
T('13.618', '13.618');
T('1.03', '-1.03');
T('3.7457e-13', '0.00000000000037457');
T('5.2', '-5.2');
T('3.5', '3.5');
T('364', '-364');
T('7.336', '7.336');
T('1.1447e-16', '-0.00000000000000011447');
T('510.63', '-510.63');
T('5.8', '5.8');
T('7.8', '7.8');
T('2.96', '-2.96');
T('15.64', '-15.64');
T('187863', '-187863');
T('2.73', '-2.73');
T('2.671', '-2.671');
T('18.179', '-18.179');
T('855885', '855885');
T('4.16', '4.16');
T('5.722e-18', '0.000000000000000005722');
T('67.62', '67.62');
T('813.31', '813.31');
T('40.2', '40.20');
T('0.00002515', '0.00002515');
T('0.0196', '0.01960');
T('13.165', '13.165');
T('6.743', '-6.743');
T('1', '-1');
T('200.56', '-200.56');
T('1.932', '1.932');
T('92.9', '92.90');
T('16.74', '16.74');
T('4.5554e-7', '-0.00000045554');
T('2.1296e-15', '-0.0000000000000021296');
T('2.088', '2.088');
T('2577', '2577');
T('45.4', '-45.4');
T('41.3', '-41.3');
T('3.63', '-3.63');
T('1.09', '-1.09');
T('1', '-1');
T('3.7', '-3.7');
T('204.54', '204.54');
T('235.6', '235.6');
T('384', '-384');
T('0.0207', '0.02070');
T('680', '680');
T('1.09', '1.09');
T('109.2', '109.2');
T('0.00010117', '0.00010117');
T('13.81', '13.81');
T('192.3', '192.3');
T('1', '-1');
T('1.2', '1.2');
T('4.1', '-4.1');
T('2.5', '2.5');
T('8.4076', '-8.4076');
T('0.0517', '0.0517');
T('6.3923', '-6.3923');
T('506.179', '-506.179');
T('375886', '375886');
T('618858', '-618858');
T('8.5e-11', '0.000000000085');
T('6', '-6.0');
T('2.4', '2.40');
T('0.0000013', '-0.0000013');
T('1.064', '-1.064');
T('1', '-1');
T('4', '-4');
T('4.5', '-4.5');
T('93.6206', '93.6206');
T('3.07e-18', '0.00000000000000000307');
T('52.452468128', '-5.2452468128e+1');
T('14152590525718936.5008396', '1.41525905257189365008396e+16');
T('274306808392.8', '2.743068083928e+11');
T('1.52993064722314247378724599e+26', '-1.52993064722314247378724599e+26');
T('37205576746', '3.7205576746e+10');
T('868099644460934347.2665', '8.680996444609343472665e+17');
T('1254.549', '1.254549e+3');
T('6.23417196172381875892300762819e-18', '6.23417196172381875892300762819e-18');
T('13117994082191928443.1', '1.31179940821919284431e+19');
T('97697726.168', '9.7697726168e+7');
T('2.663e-10', '-2.663e-10');
T('1052', '1.052e+3');
T('3.815873266712e-20', '-3.815873266712e-20');
T('18', '1.8e+1');
T('1.033525906631680944018544811261e-13', '1.033525906631680944018544811261e-13');
T('3.805493087068952925e-11', '-3.805493087068952925e-11');
T('0.0173948', '1.73948e-2');
T('5.784e-15', '5.784e-15');
T('4.448338479762497e-8', '4.448338479762497e-8');
T('390080230.52', '3.9008023052e+8');
T('3', '3e+0');
T('8.61435e-9', '8.61435e-9');
T('43.7', '-4.37e+1');
T('8.4034159379836e-18', '-8.4034159379836e-18');
T('20028573.55721079885824481', '2.002857355721079885824481e+7');
T('7000871.862', '-7.000871862e+6');
log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n');
return [passed, total];;
})(this.Big);
if (typeof module !== 'undefined' && module.exports) module.exports = count;