Stan  1.3
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Pages
check_greater.hpp
Go to the documentation of this file.
1 #ifndef __STAN__MATH__ERROR_HANDLING__CHECK_GREATER_HPP__
2 #define __STAN__MATH__ERROR_HANDLING__CHECK_GREATER_HPP__
3 
7 
8 namespace stan {
9  namespace math {
10 
11  namespace {
12  template <typename T_y,
13  typename T_low,
14  typename T_result,
15  class Policy,
16  bool is_vec>
17  struct greater {
18  static bool check(const char* function,
19  const T_y& y,
20  const T_low& low,
21  const char* name,
22  T_result* result,
23  const Policy&) {
24  using stan::length;
25  VectorView<const T_low> low_vec(low);
26  for (size_t n = 0; n < length(low); n++) {
27  if (!(y > low_vec[n]))
28  return dom_err(function,y,name,
29  " is %1%, but must be greater than ",
30  low_vec[n],result,Policy());
31  }
32  return true;
33  }
34  };
35 
36  template <typename T_y,
37  typename T_low,
38  typename T_result,
39  class Policy>
40  struct greater<T_y, T_low, T_result, Policy, true> {
41  static bool check(const char* function,
42  const T_y& y,
43  const T_low& low,
44  const char* name,
45  T_result* result,
46  const Policy&) {
47  using stan::length;
48  VectorView<const T_low> low_vec(low);
49  for (size_t n = 0; n < length(y); n++) {
50  if (!(stan::get(y,n) > low_vec[n])) {
51  return dom_err_vec(n,function,y,name,
52  " is %1%, but must be greater than ",
53  low_vec[n],result,Policy());
54  }
55  }
56  return true;
57  }
58  };
59  }
60  template <typename T_y, typename T_low, typename T_result, class Policy>
61  inline bool check_greater(const char* function,
62  const T_y& y,
63  const T_low& low,
64  const char* name,
65  T_result* result,
66  const Policy&) {
67  return greater<T_y,T_low,T_result,Policy,
68  is_vector_like<T_y>::value>::check(function,y,low,name,result,Policy());
69  }
70  template <typename T_y, typename T_low, typename T_result>
71  inline bool check_greater(const char* function,
72  const T_y& y,
73  const T_low& low,
74  const char* name,
75  T_result* result) {
76  return check_greater(function,y,low,name,result,default_policy());
77  }
78  template <typename T_y, typename T_low>
79  inline bool check_greater(const char* function,
80  const T_y& y,
81  const T_low& low,
82  const char* name) {
83  return check_greater<T_y,T_low,typename scalar_type<T_y>::type *>
84  (function,y,low,name,0,default_policy());
85  }
86 
87  }
88 }
89 #endif

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