]>
Dogcows Code - chaz/yoink/blob - src/cml/constants.h
1 /* -*- C++ -*- ------------------------------------------------------------
3 Copyright (c) 2007 Jesse Anders and Demian Nave http://cmldev.net/
5 The Configurable Math Library (CML) is distributed under the terms of the
6 Boost Software License, v1.0 (see cml/LICENSE for details).
8 *-----------------------------------------------------------------------*/
10 * @brief Useful constants.
13 #ifndef cml_constants_h
14 #define cml_constants_h
19 #define M_PI 3.14159265358979323846264338327950288
23 #define M_SQRT2 1.41421356237309504880168872420969808
27 #define M_E 2.71828182845904523536028747135266250
34 /** Templated constants struct.
36 * Either float or double can be used.
38 template<typename Float
>
40 static Float
pi() { return M_PI
; }
41 static Float
two_pi() { return 2.*M_PI
; }
42 static Float
inv_pi() { return 1./M_PI
; }
43 static Float
inv_two_pi() { return 1./(2.*M_PI
); }
44 static Float
pi_over_2() { return M_PI
/2.; }
45 static Float
pi_over_4() { return M_PI
/4.; }
46 static Float
deg_per_rad() { return 180./M_PI
; }
47 static Float
rad_per_deg() { return M_PI
/180.; }
48 static Float
sqrt_2() { return M_SQRT2
; }
49 static Float
sqrt_3() { return 1.732050807568877293527446341505; }
50 static Float
sqrt_5() { return 2.236067977499789696409173668731; }
51 static Float
sqrt_6() { return 2.449489742783178098197284074705; }
52 static Float
e() { return M_E
; }
57 /* XXX This version requires an explicit instantiation of *every* constant
60 * template<typename F> const F cml::constants<F>::pi;
62 /** Templated constants struct.
64 * Either float or double can be used.
66 template<typename Float
>
68 static const Float pi
= M_PI
;
69 static const Float two_pi
= 2.*M_PI
;
70 static const Float inv_pi
= 1./M_PI
; /* 1/pi */
71 static const Float inv_two_pi
= 1./(2.*M_PI
); /* 1/(2*pi) */
72 static const Float pi_over_2
= M_PI
/2.; /* pi/2 */
73 static const Float pi_over_4
= M_PI
/4.; /* pi/4 */
74 static const Float deg_per_rad
= 180./M_PI
;
75 static const Float rad_per_deg
= M_PI
/180.;
76 static const Float sqrt_2
= M_SQRT2
;
77 static const Float sqrt_3
= 1.73205080756887729352744634150587237;
78 static const Float sqrt_5
= 2.23606797749978969640917366873127624;
79 static const Float sqrt_6
= 2.44948974278317809819728407470589139;
80 static const Float e
= M_E
;
This page took 0.042807 seconds and 5 git commands to generate.