quaeratin
Version:
An extended precision floating point library (as per Shewchuk) - precision only limited by overflow / underflow
90 lines (73 loc) • 2.59 kB
text/typescript
import { expect } from 'chai';
import { describe } from 'mocha';
import { eToBitlength, eCompress } from '../../src/index.js';
describe('to bit length', function() {
it('should set the bit length of some doubles correctly',
function() {
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 56);
expect(res).to.eql([-8.526512829121202e-14, 1341.0000297837585]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 55);
expect(res).to.eql([-1.1368683772161603e-13, 1341.0000297837585]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 54);
expect(res).to.eql([-1.1368683772161603e-13, 1341.0000297837585]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 54);
expect(res).to.eql([-1.1368683772161603e-13, 1341.0000297837585]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 53);
expect(res).to.eql([1341.0000297837585]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 32);
expect(res).to.eql([1341.0000295639038]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 28);
expect(res).to.eql([1341.0000305175781]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 25);
expect(res).to.eql([1341]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 26);
expect(res).to.eql([1341.0000305175781]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 10);
expect(res).to.eql([1342]);
}
{
let a = eCompress([134134123111*(2**-52), 1341]);
let res = eToBitlength(a, 4);
expect(res).to.eql([1280]);
}
{
let a = [1341];
let res = eToBitlength(a, 4);
expect(res).to.eql([1280]);
}
{
let a = [134134123111*(2**-52), 1341];
let res = eToBitlength(a, 4);
expect(res).to.eql([1280]);
}
});
});