41 #ifndef BPP_NUMERIC_NUMTOOLS_H
42 #define BPP_NUMERIC_NUMTOOLS_H
50 template<
class Scalar>
class RowMatrix;
67 template<
class T>
static T
abs(T a) {
return a < 0 ? -a : a; }
78 template<
class T>
static T
sign(T a) {
return a < 0 ? -1 : (a == 0 ? 0 : 1); }
89 template<
class T>
static T
max(T a, T b) {
return a > b ? a : b; }
100 template<
class T>
static T
min(T a, T b) {
return a < b ? a : b; }
109 template<
class T>
static T
sign(T a, T b) {
return abs<T>(a) * sign<T>(b); }
117 template<
class T>
static T
sqr(T a) {
return a * a; }
132 template<
class T>
static T
logsum(T lnx, T lny)
135 lnx + std::log(1. + exp(lny - lnx)) :
136 lny + std::log(1. + exp(lnx - lny));
141 template<
class T>
static void swap(T& a, T& b)
148 template<
class T>
static void shift(T& a, T& b, T c)
153 template<
class T>
static void shift(T& a, T& b, T& c, T d)
160 template<
class T>
static T
fact(T n) {
return (n == 0) ? 1 : n*
fact(n - 1); }
164 template<
class T>
static T
logFact(T n) {
return (n == 0) ? 0 : (std::log(n) +
logFact(n - 1)); }
179 static double uniRoot(
Function& f,
const std::string& param,
double a,
double b,
double tolerance);
This is the abstract class for second order derivable functions.
This is the function abstract class.
The parameter list object.