LCOV - code coverage report
Current view: top level - src/AH/Math - Degrees.hpp (source / functions) Hit Total Coverage
Test: ffed98f648fe78e7aa7bdd228474317d40dadbec Lines: 7 7 100.0 %
Date: 2022-05-28 15:22:59 Functions: 6 6 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  * @brief   Conversions between radians and degrees.
       4             :  */
       5             : #pragma once
       6             : 
       7             : #include <AH/STL/type_traits>
       8             : #include <AH/Settings/NamespaceSettings.hpp>
       9             : #include <AH/Settings/Warnings.hpp>
      10             : AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
      11             : 
      12             : BEGIN_AH_NAMESPACE
      13             : 
      14             : namespace detail {
      15             : constexpr long double pi_inv_l = 0.318309886183790671537767526745028724L;
      16             : constexpr long double pi_l = 3.141592653589793238462643383279502884L;
      17             : } // namespace detail
      18             : 
      19             : /// @addtogroup AH_Math
      20             : /// @{
      21             : 
      22             : /// Convert radians to degrees.
      23             : template <class T>
      24             : constexpr inline
      25             :     typename std::enable_if<std::is_floating_point<T>::value, T>::type
      26           4 :     rad2deg(T r) {
      27           4 :     return r * static_cast<T>(detail::pi_inv_l) * 180;
      28             : }
      29             : /// Convert degrees to radians.
      30             : template <class T>
      31             : constexpr inline
      32             :     typename std::enable_if<std::is_floating_point<T>::value, T>::type
      33      499718 :     deg2rad(T d) {
      34      499718 :     return d * static_cast<T>(detail::pi_l) / 180;
      35             : }
      36             : 
      37             : /// Convert degrees to radians, e.g. 10_deg.
      38           1 : constexpr long double operator"" _deg(long double deg) { return deg2rad(deg); }
      39             : /// Convert degrees to radians, e.g. 10_deg.
      40      499714 : constexpr long double operator"" _deg(unsigned long long deg) {
      41      499714 :     return deg2rad(static_cast<long double>(deg));
      42             : }
      43             : 
      44             : /// @}
      45             : 
      46             : END_AH_NAMESPACE
      47             : 
      48             : AH_DIAGNOSTIC_POP()

Generated by: LCOV version 1.15