1// Copyright (c) 2012 The Chromium 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#ifndef BASE_FLOAT_UTIL_H_
6#define BASE_FLOAT_UTIL_H_
7
8#include "build/build_config.h"
9
10#include <float.h>
11
12#include <cmath>
13
14namespace base {
15
16template <typename Float>
17inline bool IsFinite(const Float& number) {
18#if defined(OS_POSIX)
19  return std::isfinite(number) != 0;
20#elif defined(OS_WIN)
21  return _finite(number) != 0;
22#endif
23}
24
25template <typename Float>
26inline bool IsNaN(const Float& number) {
27#if defined(OS_POSIX)
28  return std::isnan(number) != 0;
29#elif defined(OS_WIN)
30  return _isnan(number) != 0;
31#endif
32}
33
34}  // namespace base
35
36#endif  // BASE_FLOAT_UTIL_H_
37