Adam Ahmed wrote:
Just noting that this actually works:
 Math.ceil(Math.log(0 + 1) / Math.LN2) === 0

However:
Math.ceil(Math.log(-1 + 1) / Math.LN2) === -Infinity

That's pretty sweet, but then try -2 or -3 or below and you get NaN.

Not sure how that affects a Negative NaN-cy option :)

Heh.

I think we should make sure (per Jason and Jens) that, given type inference or asm.js-style type-checking, we can select a single common machine instruction. After that, we should consider more abstract "prettiness" properties such as the one you show for -1. And given the -Infinity then NaN inconsistency, perhaps NaN wins. But Jens' point about Infinity (bit length in two's complement infinite precision of any negative number) is strangely compelling.

Need to hear from type-inference and asm.js gurus. Cc'ing a few. The issue is, given

  Math.bitlen(x)

where x has inferred type int32, what do we need in the way of a guard for negative values? We need something, we cannot use BSR directly without getting 32 for -1.

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to