1 // Copyright 2014 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 function Module(stdlib) { 6 "use asm"; 7 8 var fround = stdlib.Math.fround; 9 10 // f: double -> float 11 function f(a) { 12 a = +a; 13 return fround(a); 14 } 15 16 return { f: f }; 17 } 18 19 var f = Module({ Math: Math }).f; 20 21 assertTrue(isNaN(f(NaN))); 22 assertTrue(isNaN(f(undefined))); 23 assertTrue(isNaN(f(function() {}))); 24 25 assertEquals("Infinity", String(1/f(0))); 26 assertEquals("-Infinity", String(1/f(-0))); 27 assertEquals("Infinity", String(f(Infinity))); 28 assertEquals("-Infinity", String(f(-Infinity))); 29 assertEquals("Infinity", String(f(1E200))); 30 assertEquals("-Infinity", String(f(-1E200))); 31 assertEquals("Infinity", String(1/f(1E-300))); 32 assertEquals("-Infinity", String(1/f(-1E-300))); 33 34 assertEquals(0, f(0)); 35 assertEquals(1, f(1)); 36 assertEquals(1.5, f(1.5)); 37 assertEquals(1.3370000123977661, f(1.337)); 38 assertEquals(-4.300000190734863, f(-4.3)); 39