LCOV - code coverage report
Current view: top level - math3d - core.hpp (source / functions) Coverage Total Hit
Test: coverage_clean.info Lines: 87.5 % 16 14
Test Date: 2026-03-30 03:13:12 Functions: 87.5 % 8 7

            Line data    Source code
       1              : #pragma once
       2              : #include <cmath>
       3              : #include <limits>
       4              : #include <cassert>
       5              : #include <iostream>
       6              : 
       7              : #ifdef PI
       8              : #  undef PI
       9              : #endif
      10              : 
      11              : namespace m3d
      12              : {
      13              :     using scalar = double;
      14              :     constexpr scalar PI = 3.14159265358979323846;
      15              :     constexpr scalar EPSILON = 1e-9;           // std::numeric_limits<scalar>::epsilon();
      16              :     constexpr scalar ERROR_ULP = 2.107342e-08; //  unit of least precision (or Unit in the last place) for doubles
      17              : 
      18              :     template <typename T>
      19        26898 :     inline T clamp(T v, T lo, T hi)
      20              :     {
      21        26898 :         return (v < lo) ? lo : ((v > hi) ? hi : v);
      22              :     }
      23              : 
      24              :     inline scalar to_radians(scalar degrees)
      25              :     {
      26              :         return degrees * (PI / 180.0);
      27              :     }
      28              : 
      29         7317 :     inline scalar min(scalar x, scalar y)
      30              :     {
      31         7317 :         return std::min(x, y);
      32              :     }
      33              : 
      34            0 :     inline scalar max(scalar x, scalar y)
      35              :     {
      36            0 :         return std::max(x, y);
      37              :     }
      38              : 
      39        27895 :     inline scalar abs(scalar x)
      40              :     {
      41        27895 :         return std::abs(x);
      42              :     }
      43              : 
      44        22512 :     inline scalar sqrt(scalar x)
      45              :     {
      46        22512 :         return std::sqrt(x);
      47              :     }
      48              : 
      49           62 :     inline scalar sin(scalar x)
      50              :     {
      51           62 :         return std::sin(x);
      52              :     }
      53              :     
      54           64 :     inline scalar cos(scalar x)
      55              :     {
      56           64 :         return std::cos(x);
      57              :     }
      58              :     
      59           10 :     inline scalar atan2(scalar y, scalar x)
      60              :     {
      61           10 :         return std::atan2(y, x);
      62              :     }
      63              : }
        

Generated by: LCOV version 2.0-1