quaeratin
Version:
An extended precision floating point library (as per Shewchuk) - precision only limited by overflow / underflow
24 lines (16 loc) • 520 B
text/typescript
import { getHighestSetBit } from "./get-max-set-bit.js";
import { exponent } from "./exponent.js";
/**
* Returns the true exponent of the msb that is set of the given number or
* NaN if a === 0 or +-inf or NaN.
* @param a An array of numbers to check
*/
function msbExponent(a: number): number {
if (a === 0 || !Number.isFinite(a)) {
return NaN;
}
const e = exponent(a);
// Will return e for all but subnormal numbers
return getHighestSetBit(a) - 52 + e;
}
export { msbExponent }