LCOV - code coverage report
Current view: top level - src/Numeric - Function.H (source / functions) Hit Total Coverage
Test: coverage_merged.info Lines: 11 11 100.0 %
Date: 2024-11-18 05:28:54 Functions: 3 3 100.0 %

          Line data    Source code
       1             : #ifndef NUMERIC_FUNCTION_H
       2             : #define NUMERIC_FUNCTION_H
       3             : 
       4             : 
       5             : namespace Numeric
       6             : {
       7             : namespace Function
       8             : {
       9             : 
      10             : template<int d> class Polynomial;
      11             : 
      12             : template<>
      13             : class Polynomial<3>
      14             : {
      15             : public:
      16       54060 :     Polynomial(Set::Scalar a0, Set::Scalar a1, Set::Scalar a2, Set::Scalar a3)
      17       54060 :     {
      18       54060 :         a[0] = a0; a[1] = a1; a[2] = a2; a[3] = a3;
      19       54060 :     }
      20             :     AMREX_FORCE_INLINE
      21             :         Set::Scalar operator() (const Set::Scalar x) const
      22             :     {
      23    97451800 :         return a[0] + x * (a[1] + x * (a[2] + x * a[3]));
      24             :     }
      25             : private:
      26             :     std::array<Set::Scalar, 4> a;
      27             : };
      28             : 
      29             : template<>
      30             : class Polynomial<4>
      31             : {
      32             : public:
      33       54060 :     Polynomial(Set::Scalar a0, Set::Scalar a1, Set::Scalar a2, Set::Scalar a3, Set::Scalar a4)
      34       54060 :     {
      35       54060 :         a[0] = a0; a[1] = a1; a[2] = a2; a[3] = a3; a[4] = a4;
      36       54060 :     }
      37             :     AMREX_FORCE_INLINE
      38             :         Set::Scalar operator() (const Set::Scalar x) const
      39             :     {
      40             :         return a[0] + x * (a[1] + x * (a[2] + x * (a[3] + x * a[4])));
      41             :     }
      42       54060 :     Polynomial<3> D() const
      43             :     {
      44       54060 :         return Polynomial<3>(a[1], 2. * a[2], 3 * a[3], 4 * a[4]);
      45             :     }
      46             : private:
      47             :     std::array<Set::Scalar, 5> a;
      48             : };
      49             : 
      50             : }
      51             : }
      52             : 
      53             : 
      54             : 
      55             : 
      56             : 
      57             : 
      58             : #endif

Generated by: LCOV version 1.14