Stan  2.5.0
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
numeric_limits.hpp
Go to the documentation of this file.
1 #ifndef STAN__AGRAD__REV__NUMERIC_LIMITS_HPP
2 #define STAN__AGRAD__REV__NUMERIC_LIMITS_HPP
3 
4 #include <limits>
5 #include <stan/agrad/rev/var.hpp>
6 
7 namespace std {
8 
15  template<>
16  struct numeric_limits<stan::agrad::var> {
17  static const bool is_specialized = true;
20  static const int digits = numeric_limits<double>::digits;
21  static const int digits10 = numeric_limits<double>::digits10;
22  static const bool is_signed = numeric_limits<double>::is_signed;
23  static const bool is_integer = numeric_limits<double>::is_integer;
24  static const bool is_exact = numeric_limits<double>::is_exact;
25  static const int radix = numeric_limits<double>::radix;
26  static stan::agrad::var epsilon() { return numeric_limits<double>::epsilon(); }
27  static stan::agrad::var round_error() { return numeric_limits<double>::round_error(); }
28 
29  static const int min_exponent = numeric_limits<double>::min_exponent;
30  static const int min_exponent10 = numeric_limits<double>::min_exponent10;
31  static const int max_exponent = numeric_limits<double>::max_exponent;
32  static const int max_exponent10 = numeric_limits<double>::max_exponent10;
33 
34  static const bool has_infinity = numeric_limits<double>::has_infinity;
35  static const bool has_quiet_NaN = numeric_limits<double>::has_quiet_NaN;
36  static const bool has_signaling_NaN = numeric_limits<double>::has_signaling_NaN;
37  static const float_denorm_style has_denorm = numeric_limits<double>::has_denorm;
38  static const bool has_denorm_loss = numeric_limits<double>::has_denorm_loss;
39  static stan::agrad::var infinity() { return numeric_limits<double>::infinity(); }
40  static stan::agrad::var quiet_NaN() { return numeric_limits<double>::quiet_NaN(); }
41  static stan::agrad::var signaling_NaN() { return numeric_limits<double>::signaling_NaN(); }
42  static stan::agrad::var denorm_min() { return numeric_limits<double>::denorm_min(); }
43 
44  static const bool is_iec559 = numeric_limits<double>::is_iec559;
45  static const bool is_bounded = numeric_limits<double>::is_bounded;
46  static const bool is_modulo = numeric_limits<double>::is_modulo;
47 
48  static const bool traps = numeric_limits<double>::traps;
49  static const bool tinyness_before = numeric_limits<double>::tinyness_before;
50  static const float_round_style round_style = numeric_limits<double>::round_style;
51  };
52 
62  inline int isnan(const stan::agrad::var& a) {
63  return isnan(a.val());
64  }
65 
75  inline int isinf(const stan::agrad::var& a) {
76  return isinf(a.val());
77  }
78 
79 }
80 #endif
static stan::agrad::var denorm_min()
double val() const
Return the value of this variable.
Definition: var.hpp:209
double max(const double a, const double b)
Definition: max.hpp:7
static stan::agrad::var round_error()
static stan::agrad::var signaling_NaN()
Independent (input) and dependent (output) variables for gradients.
Definition: var.hpp:27
int isinf(const stan::agrad::var &a)
Checks if the given number is infinite.
int isnan(const stan::agrad::var &a)
Checks if the given number is NaN.
double min(const double a, const double b)
Definition: min.hpp:7

     [ Stan Home Page ] © 2011–2014, Stan Development Team.