// Instantiante some functions to be able to inspect the generated // machine code #define VML_NODEBUG #include "vecmathlib.h" namespace vecmathlib { template typename realvec_t::real_t get_elt(realvec_t x) { return x[n]; } template realvec_t set_elt(realvec_t x, typename realvec_t::real_t a) { return x.set_elt(n, a); } // template realbuiltinvec fabs(realbuiltinvec x); // template realbuiltinvec fmin(realbuiltinvec x, realbuiltinvec y); // template intbuiltinvec lsr(intbuiltinvec x, intbuiltinvec::int_t n); // template intbuiltinvec lsr(intbuiltinvec x, intbuiltinvec::int_t n); // template intbuiltinvec lsr(intbuiltinvec x, intbuiltinvec::int_t n); // template intbuiltinvec lsr(intbuiltinvec x, intbuiltinvec n); // template realbuiltinvec ifthen(realbuiltinvec::boolvec_t c, realbuiltinvec x, realbuiltinvec y); // template realbuiltinvec ifthen(realbuiltinvec::boolvec_t c, realbuiltinvec x, realbuiltinvec y); // template realbuiltinvec ifthen(realbuiltinvec::boolvec_t c, realbuiltinvec x, realbuiltinvec y); // template realbuiltinvec ifthen(realbuiltinvec::boolvec_t c, realbuiltinvec x, realbuiltinvec y); #ifdef VECMATHLIB_HAVE_VEC_FLOAT_1 template realvec round(realvec x); #endif #ifdef VECMATHLIB_HAVE_VEC_DOUBLE_1 template realvec exp(realvec x); template realvec log(realvec x); template realvec sin(realvec x); template realvec sqrt(realvec x); template realvec::real_t get_elt,0>(realvec x); template realvec set_elt,0>(realvec x, realvec::real_t a); #endif #ifdef VECMATHLIB_HAVE_VEC_DOUBLE_2 template realvec exp(realvec x); template realvec log(realvec x); template realvec sin(realvec x); template realvec sqrt(realvec x); template realvec::real_t get_elt,0>(realvec); template realvec::real_t get_elt,1>(realvec); template realvec set_elt,0>(realvec x, realvec::real_t a); template realvec set_elt,1>(realvec x, realvec::real_t a); #endif #ifdef VECMATHLIB_HAVE_VEC_DOUBLE_4 template realvec exp(realvec x); template realvec log(realvec x); template realvec sin(realvec x); template realvec sqrt(realvec x); template realvec::real_t get_elt,0>(realvec); template realvec::real_t get_elt,1>(realvec); template realvec::real_t get_elt,2>(realvec); template realvec::real_t get_elt,3>(realvec); template realvec set_elt,0>(realvec x, realvec::real_t a); template realvec set_elt,1>(realvec x, realvec::real_t a); template realvec set_elt,2>(realvec x, realvec::real_t a); template realvec set_elt,3>(realvec x, realvec::real_t a); #endif }