quaeratin
Version:
An extended precision floating point library (as per Shewchuk) - precision only limited by overflow / underflow
44 lines (35 loc) • 1.54 kB
text/typescript
import { assert, expect } from 'chai';
import { describe } from 'mocha';
import { expBitLength, eToBitlength, getLowestSetBit, exponent } from '../../src/index.js';
describe('expansion bit length', function() {
it('should check expansion bit lengths correctly',
function() {
expect(expBitLength([0])).to.eql(0);
expect(expBitLength([1])).to.eql(1);
expect(expBitLength([2])).to.eql(1);
expect(expBitLength([65536])).to.eql(1);
expect(expBitLength([1/65536])).to.eql(1);
expect(expBitLength([65535])).to.eql(16);
//expect(expBitLength([1.390671161567e-310])).to.eql(44);
//expect(expBitLength([1.3906711615669e-310])).to.eql(42);
let a: number[];
a = [0.1, 1801439850948198.5];
expect(expBitLength(a)).to.eql(106);
//console.log(eToBitlength(a,105));
//console.log(eToBitlength(a,106));
//console.log(eToBitlength(a,107));
a = [0.1, 2**3 * 1801439850948198.5];
expect(expBitLength(a)).to.eql(109);
a = [0.10000000000000002, 1801439850948198.5];
expect(expBitLength(a)).to.eql(107);
a = [0.09999999999999964, 1801439850948198.5];
expect(expBitLength(a)).to.eql(100);
a = [1, 2, 4, 8];
expect(expBitLength(a)).to.eql(4);
a = [15];
expect(expBitLength(a)).to.eql(4);
//console.log(eToBitlength(a,3)); // => 16
//console.log(eToBitlength(a,4)); // => 15
//console.log(eToBitlength(a,5)); // => 15
});
});