tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

math-f16round-produce-float32-input-is-double.js (1123B)


      1 function sqrt_float32(v) {
      2  return Math.fround(Math.sqrt(Math.fround(v)));
      3 }
      4 
      5 function sqrt_float16(v) {
      6  return Math.fround(Math.sqrt(Math.f16round(v)));
      7 }
      8 
      9 function abs_float32(v) {
     10  return Math.fround(Math.abs(Math.fround(v)));
     11 }
     12 
     13 function abs_float16(v) {
     14  return Math.fround(Math.abs(Math.f16round(v)));
     15 }
     16 
     17 function ceil_float32(v) {
     18  return Math.fround(Math.abs(Math.fround(v)));
     19 }
     20 
     21 function ceil_float16(v) {
     22  return Math.fround(Math.abs(Math.f16round(v)));
     23 }
     24 
     25 function mul_float32(v) {
     26  return Math.fround(Math.fround(v) * 2);
     27 }
     28 
     29 function mul_float16(v) {
     30  return Math.fround(Math.f16round(v) * 2);
     31 }
     32 
     33 function cmp_float32(v) {
     34  return Math.fround(v) < 1000;
     35 }
     36 
     37 function cmp_float16(v) {
     38  return Math.f16round(v) < 1000;
     39 }
     40 
     41 // Don't inline functions into the global scope.
     42 with ({}) ;
     43 
     44 for (let i = 0; i < 1024; ++i) {
     45  assertEq(sqrt_float16(i + 0.5), sqrt_float32(i + 0.5));
     46  assertEq(abs_float16(i + 0.5), abs_float32(i + 0.5));
     47  assertEq(ceil_float16(i + 0.5), ceil_float32(i + 0.5));
     48  assertEq(mul_float16(i + 0.5), mul_float32(i + 0.5));
     49  assertEq(cmp_float16(i + 0.5), cmp_float32(i + 0.5));
     50 }