! Module containing mathematical quantities.
! Mathematical constants have the prefix m_.
!
! Josep M. Aparicio
! Meteorological Service of Canada, 2003


module modgps01ctmath 2,1
  use modgps00base, only: dp
  implicit none
  
  ! Logarithms
  real(dp), parameter :: m_e      = 2.7182818284590452353602874_dp
  real(dp), parameter :: m_log2e  = 1.4426950408889634073599247_dp
  real(dp), parameter :: m_log10e = 0.4342944819032518276511289_dp
  real(dp), parameter :: m_ln2    = 0.6931471805599453094172321_dp
  real(dp), parameter :: m_ln10   = 2.3025850929940456840179914_dp
  
  ! Number Pi
  real(dp), parameter :: m_pi     = 3.1415926535897932384626432_dp
  real(dp), parameter :: m_pi_2   = 1.5707963267948966192313216_dp
  real(dp), parameter :: m_pi_4   = 0.7853981633974483096156608_dp
  real(dp), parameter :: m_1_pi   = 0.3183098861837906715377675_dp
  real(dp), parameter :: m_2_pi   = 0.6366197723675813430755350_dp
  
  ! Square roots
  real(dp), parameter :: m_sqrt2  = 1.4142135623730950488016887_dp
  real(dp), parameter :: m_sqrt3  = 1.7320508075688772935274463_dp
  real(dp), parameter :: m_sqrt5  = 2.2360679774997896964091736_dp
  real(dp), parameter :: m_sqrtpi = 1.7724538509055160272981674_dp
  
  ! Common simple fractions
  real(dp), parameter :: m_ot     = 0.3333333333333333333333333_dp
  real(dp), parameter :: m_tt     = 0.6666666666666666666666666_dp
  
  ! Golden ratio
  real(dp), parameter :: m_gold   = 1.6180339887498948482045868_dp
  
  ! Angle conversions
  real(dp), parameter :: m_arcdeg = m_pi / 180._dp
  real(dp), parameter :: m_arcmin = m_arcdeg / 60._dp
  real(dp), parameter :: m_arcsec = m_arcmin / 60._dp
  
  ! Imaginary:
  complex(dp), parameter :: m_i    = (0._dp, 1._dp)
  
end module modgps01ctmath