13 if (x<static_cast<double>(FLT_MIN) || x > static_cast<double>(FLT_MAX))
15 double res =
static_cast<double>(_mm_cvtss_f32(_mm_rsqrt_ss(_mm_set_ss(static_cast<float>(x)))));
16 return x*res*(1.5 - 0.5*res*res*x);
26 vector<double>
linspace(
double xl,
double xh,
int n)
28 vector<double> res(static_cast<size_t>(n),0);
29 for(
size_t i=0;i<size_t(n);++i)
30 res[i] = xl + (xh-xl)*
static_cast<double>(i)/
31 static_cast<double>(n-1);
35 vector<double>
arange(
double x_min,
double x_max,
double dx)
37 assert((x_max-x_min)/dx>0 &&
"dx has wrong sign");
39 for(
double x=x_min;x<x_max;x+=dx)
44 double min(vector<double>
const& v)
47 for(
size_t i=1;i<v.size();++i)
52 double max(vector<double>
const& v)
55 for(
size_t i=1;i<v.size();++i)
Various useful functions.
double max(vector< double > const &v)
returns the maximal term in a vector
double fastsqrt(double x)
Fast approximate sqrt.
vector< double > linspace(double xl, double xh, int n)
Uniformly spaced array (like the matlab function with the same name)
double min(vector< double > const &v)
Returns the minimal term in a vector.
vector< double > arange(double x_min, double x_max, double dx)
Uniformly spaced array (line numpy function with the same name)
bool is_nan(double x)
Checks whether a number is a nan.