6 #ifndef __math_sincos_hpp__ 7 #define __math_sincos_hpp__ 9 #include <boost/type_traits.hpp> 15 template<typename Scalar, bool value = boost::is_floating_point<Scalar>::value>
struct SINCOSAlgo;
26 template<
typename Scalar>
27 void SINCOS(
const Scalar & a, Scalar * sa, Scalar * ca)
33 template<
typename Scalar,
bool>
36 static void run(
const Scalar & a, Scalar * sa, Scalar * ca)
38 (*sa) = std::sin(a); (*ca) = std::cos(a);
46 static void run(
const double & a,
double * sa,
double * ca)
52 #else // if sincos specialization does not exist 53 (*sa) = std::sin(a); (*ca) = std::cos(a);
62 static void run(
const float & a,
float * sa,
float * ca)
68 #else // if sincosf specialization does not exist 69 (*sa) = std::sin(a); (*ca) = std::cos(a);
78 static void run(
const long double & a,
long double * sa,
long double * ca)
82 #else // if sincosl specialization does not exist 83 (*sa) = std::sin(a); (*ca) = std::cos(a);
89 template<
class Scalar>
92 static void run(
const Scalar & a, Scalar * sa, Scalar * ca)
94 (*sa) = sin(a); (*ca) = cos(a);
100 #endif //#ifndef __math_sincos_hpp__
void SINCOS(const Scalar &a, Scalar *sa, Scalar *ca)
Computes sin/cos values of a given input scalar.
Main pinocchio namespace.