| Index: src/base/math.cc
|
| diff --git a/src/base/math.cc b/src/base/math.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b426590cb1784dbb98d62973c8e24daec0223e51
|
| --- /dev/null
|
| +++ b/src/base/math.cc
|
| @@ -0,0 +1,39 @@
|
| +// Copyright 2015 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "src/base/macros.h"
|
| +#include "src/base/math.h"
|
| +
|
| +namespace v8 {
|
| +namespace base {
|
| +
|
| +bool IsQuietNaN(float x) {
|
| + uint32_t const v = bit_cast<uint32_t>(x);
|
| + return (v >= 0x7FC00000u && v <= 0x7FFFFFFFu) || v >= 0xFFC00000u;
|
| +}
|
| +
|
| +
|
| +bool IsQuietNaN(double x) {
|
| + uint32_t const v = bit_cast<uint64_t>(x) >> 32u;
|
| + return (v >= 0x7FF80000u && v <= 0x7FFFFFFFu) || v >= 0xFFF80000u;
|
| +}
|
| +
|
| +
|
| +bool IsSignalingNaN(float x) {
|
| + uint32_t const v = bit_cast<uint32_t>(x);
|
| + return (v >= 0x7F800001u && v <= 0x7FBFFFFFu) ||
|
| + (v >= 0xFF800001u && v <= 0xFFBFFFFFu);
|
| +}
|
| +
|
| +
|
| +bool IsSignalingNaN(double x) {
|
| + uint64_t const v = bit_cast<uint64_t>(x);
|
| + return (v >= V8_UINT64_C(0x7FF0000000000001) &&
|
| + v <= V8_UINT64_C(0x7FF7FFFFFFFFFFFF)) ||
|
| + (v >= V8_UINT64_C(0xFFF0000000000001) &&
|
| + v <= V8_UINT64_C(0xFFF7FFFFFFFFFFFF));
|
| +}
|
| +
|
| +} // namespace base
|
| +} // namespace v8
|
|
|