Alamo
Function.H
Go to the documentation of this file.
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:
17  {
18  a[0] = a0; a[1] = a1; a[2] = a2; a[3] = a3;
19  }
20  AMREX_FORCE_INLINE
21  Set::Scalar operator() (const Set::Scalar x) const
22  {
23  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:
34  {
35  a[0] = a0; a[1] = a1; a[2] = a2; a[3] = a3; a[4] = a4;
36  }
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  Polynomial<3> D() const
43  {
44  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
Numeric::Function::Polynomial< 4 >::Polynomial
Polynomial(Set::Scalar a0, Set::Scalar a1, Set::Scalar a2, Set::Scalar a3, Set::Scalar a4)
Definition: Function.H:33
Numeric::Function::Polynomial< 3 >
Definition: Function.H:13
Set::Scalar
amrex::Real Scalar
Definition: Base.H:19
Numeric::Function::Polynomial< 3 >::Polynomial
Polynomial(Set::Scalar a0, Set::Scalar a1, Set::Scalar a2, Set::Scalar a3)
Definition: Function.H:16
Numeric::Function::Polynomial< 4 >::a
std::array< Set::Scalar, 5 > a
Definition: Function.H:47
Numeric::Function::Polynomial< 3 >::a
std::array< Set::Scalar, 4 > a
Definition: Function.H:26
Numeric::Function::Polynomial
Definition: Function.H:10
Numeric
This namespace contains some numerical tools.
Definition: Function.H:5
Numeric::Function::Polynomial< 4 >::D
Polynomial< 3 > D() const
Definition: Function.H:42