• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5function 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
19var f = Module({ Math: Math }).f;
20
21assertTrue(isNaN(f(NaN)));
22assertTrue(isNaN(f(undefined)));
23assertTrue(isNaN(f(function() {})));
24
25assertEquals("Infinity", String(1/f(0)));
26assertEquals("-Infinity", String(1/f(-0)));
27assertEquals("Infinity", String(f(Infinity)));
28assertEquals("-Infinity", String(f(-Infinity)));
29assertEquals("Infinity", String(f(1E200)));
30assertEquals("-Infinity", String(f(-1E200)));
31assertEquals("Infinity", String(1/f(1E-300)));
32assertEquals("-Infinity", String(1/f(-1E-300)));
33
34assertEquals(0,                  f(0));
35assertEquals(1,                  f(1));
36assertEquals(1.5,                f(1.5));
37assertEquals(1.3370000123977661, f(1.337));
38assertEquals(-4.300000190734863, f(-4.3));
39