quadstore
Version:
Quadstore is a LevelDB-backed RDF graph database / triplestore for JavaScript runtimes (browsers, Node.js, Deno, Bun, ...) that implements the RDF/JS interfaces and supports SPARQL queries and querying across named graphs.
66 lines • 1.52 kB
JavaScript
const join = (encodingCase, exponent, mantissa) => {
let r = '' + encodingCase;
if (exponent < 10) {
r += '00' + exponent;
}
else if (exponent < 100) {
r += '0' + exponent;
}
else {
r += exponent;
}
r += mantissa.toFixed(17);
return r;
};
const ZERO = join(3, 0, 0);
const NEG_INF = join(0, 0, 0);
const POS_INF = join(6, 0, 0);
const NAN = join(7, 0, 0);
export const encode = (stringOrNumber) => {
let mantissa = typeof stringOrNumber !== 'number'
? parseFloat(stringOrNumber)
: stringOrNumber;
if (Number.isNaN(mantissa)) {
return NAN;
}
if (mantissa === -Infinity) {
return NEG_INF;
}
if (mantissa === Infinity) {
return POS_INF;
}
if (mantissa === 0) {
return ZERO;
}
let exponent = 0;
let sign = 0;
if (mantissa < 0) {
sign = 1;
mantissa *= -1;
}
while (mantissa > 10) {
mantissa /= 10;
exponent += 1;
}
while (mantissa < 1) {
mantissa *= 10;
exponent -= 1;
}
if (sign === 1) {
if (exponent >= 0) {
return join(1, 999 - exponent, 10 - mantissa);
}
else {
return join(2, exponent * -1, 10 - mantissa);
}
}
else {
if (exponent < 0) {
return join(4, 999 + exponent, mantissa);
}
else {
return join(5, exponent, mantissa);
}
}
};
//# sourceMappingURL=fpstring.js.map