00001
00029 #ifndef TRIG_HYP_H
00030 #define TRIG_HYP_H
00031
00032 #include <itpp/base/itcompat.h>
00033 #include <itpp/base/help_functions.h>
00034
00035
00036 namespace itpp
00037 {
00038
00041
00043 inline double sinc(double x)
00044 {
00045 if (x == 0) {
00046 return 1.0;
00047 }
00048 else {
00049 double pix = itpp::pi * x;
00050 return sin(pix) / pix;
00051 }
00052 }
00053
00055 inline vec sin(const vec &x) { return apply_function<double>(std::sin, x); }
00057 inline mat sin(const mat &x) { return apply_function<double>(std::sin, x); }
00059 inline vec cos(const vec &x) { return apply_function<double>(std::cos, x); }
00061 inline mat cos(const mat &x) { return apply_function<double>(std::cos, x); }
00063 inline vec tan(const vec &x) { return apply_function<double>(std::tan, x); }
00065 inline mat tan(const mat &x) { return apply_function<double>(std::tan, x); }
00067 inline vec asin(const vec &x) { return apply_function<double>(std::asin, x); }
00069 inline mat asin(const mat &x) { return apply_function<double>(std::asin, x); }
00071 inline vec acos(const vec &x) { return apply_function<double>(std::acos, x); }
00073 inline mat acos(const mat &x) { return apply_function<double>(std::acos, x); }
00075 inline vec atan(const vec &x) { return apply_function<double>(std::atan, x); }
00077 inline mat atan(const mat &x) { return apply_function<double>(std::atan, x); }
00079 inline vec sinc(const vec &x) { return apply_function<double>(sinc, x); }
00081 inline mat sinc(const mat &x) { return apply_function<double>(sinc, x); }
00082
00084
00085
00088
00090 inline vec sinh(const vec &x) { return apply_function<double>(std::sinh, x); }
00092 inline mat sinh(const mat &x) { return apply_function<double>(std::sinh, x); }
00094 inline vec cosh(const vec &x) { return apply_function<double>(std::cosh, x); }
00096 inline mat cosh(const mat &x) { return apply_function<double>(std::cosh, x); }
00098 inline vec tanh(const vec &x) { return apply_function<double>(std::tanh, x); }
00100 inline mat tanh(const mat &x) { return apply_function<double>(std::tanh, x); }
00102 inline vec asinh(const vec &x) { return apply_function<double>(::asinh, x); }
00104 inline mat asinh(const mat &x) { return apply_function<double>(::asinh, x); }
00106 inline vec acosh(const vec &x) { return apply_function<double>(::acosh, x); }
00108 inline mat acosh(const mat &x) { return apply_function<double>(::acosh, x); }
00110 inline vec atanh(const vec &x) { return apply_function<double>(::atanh, x); }
00112 inline mat atanh(const mat &x) { return apply_function<double>(::atanh, x); }
00113
00115
00116 }
00117
00118 #endif // #ifndef TRIG_HYP_H