Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_mathf 4 #ifndef tools_mathf 5 #define tools_mathf 5 #define tools_mathf 6 6 7 namespace tools { 7 namespace tools { 8 8 9 //have : static const fpi = (float)3.141592653 9 //have : static const fpi = (float)3.1415926535897931160E0; ??? 10 10 11 inline float fpi() {return (float)3.14159 11 inline float fpi() {return (float)3.1415926535897931160E0;} 12 inline float ftwo_pi() {return (float)6.28318 12 inline float ftwo_pi() {return (float)6.2831853071795862320E0;} 13 inline float fhalf_pi() {return (float)1.57079 13 inline float fhalf_pi() {return (float)1.5707963267948965580E0;} 14 14 15 //inline float fdeg2rad() {return fpi()/180.0f 15 //inline float fdeg2rad() {return fpi()/180.0f;} //0.0174f 16 //inline float frad2deg() {return 180.0f/fpi() 16 //inline float frad2deg() {return 180.0f/fpi();} 17 17 18 inline float fdeg2rad() { 18 inline float fdeg2rad() { 19 static const float s_v = fpi()/180.0f; //0.0 19 static const float s_v = fpi()/180.0f; //0.0174f 20 return s_v; 20 return s_v; 21 } 21 } 22 inline float frad2deg() { 22 inline float frad2deg() { 23 static const float s_v = 180.0f/fpi(); 23 static const float s_v = 180.0f/fpi(); 24 return s_v; 24 return s_v; 25 } 25 } 26 26 27 inline int fround(const float& a_x) { 27 inline int fround(const float& a_x) { 28 // From CoinGL/src/base/SbViewportRegion.cpp 28 // From CoinGL/src/base/SbViewportRegion.cpp. 29 if (a_x == (float) (int(a_x))) return int(a_ 29 if (a_x == (float) (int(a_x))) return int(a_x); 30 else return (a_x>0.0f) ? int(a_x+0.5f) : -in 30 else return (a_x>0.0f) ? int(a_x+0.5f) : -int(0.5f-a_x); 31 } 31 } 32 32 33 inline float fstep(const float& a_x) {return a 33 inline float fstep(const float& a_x) {return a_x<0.0f?0.0f:1.0f;} 34 34 35 } 35 } 36 36 37 37 38 #include <cmath> 38 #include <cmath> 39 39 40 namespace tools { 40 namespace tools { 41 41 42 inline float fcos(const float& x) {return (flo 42 inline float fcos(const float& x) {return (float)::cos(double(x));} 43 inline float fsin(const float& x) {return (flo 43 inline float fsin(const float& x) {return (float)::sin(double(x));} 44 inline float facos(const float& x) {return (fl 44 inline float facos(const float& x) {return (float)::acos(double(x));} 45 inline float fasin(const float& x) {return (fl 45 inline float fasin(const float& x) {return (float)::asin(double(x));} 46 inline float ftan(const float& x) {return (flo 46 inline float ftan(const float& x) {return (float)::tan(double(x));} 47 inline float fatan(const float& x) {return (fl 47 inline float fatan(const float& x) {return (float)::atan(double(x));} 48 inline float fatan2(const float& x,const float 48 inline float fatan2(const float& x,const float& y) {return (float)::atan2(double(x),double(y));} 49 inline float fsqrt(const float& x) {return (fl 49 inline float fsqrt(const float& x) {return (float)::sqrt(double(x));} 50 inline float fpow(const float& x,const float& 50 inline float fpow(const float& x,const float& y) {return (float)::pow(double(x),(double)(y));} 51 inline float fexp(const float& x) {return (flo 51 inline float fexp(const float& x) {return (float)::exp(double(x));} 52 inline float flog(const float& x) {return (flo 52 inline float flog(const float& x) {return (float)::log(double(x));} 53 inline float flog10(const float& x) {return (f 53 inline float flog10(const float& x) {return (float)::log10(double(x));} 54 inline float ffloor(const float& x) {return (f 54 inline float ffloor(const float& x) {return (float)::floor(double(x));} 55 inline float fceil(const float& x) {return (fl 55 inline float fceil(const float& x) {return (float)::ceil(double(x));} 56 inline float fcosh(const float& x) {return (fl 56 inline float fcosh(const float& x) {return (float)::cosh(double(x));} 57 inline float fsinh(const float& x) {return (fl 57 inline float fsinh(const float& x) {return (float)::sinh(double(x));} 58 inline float ffabs(const float& x) {return (fl 58 inline float ffabs(const float& x) {return (float)::fabs(double(x));} 59 59 60 } 60 } 61 61 62 #endif 62 #endif