Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/mathf

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

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