![]() |
MFEM v4.9.0
Finite element discretization library
|
This file contains the declaration of a dual number class. More...
Go to the source code of this file.
Classes | |
| struct | mfem::future::dual< value_type, gradient_type > |
| Dual number struct (value plus gradient) More... | |
| struct | mfem::future::is_dual_number< T > |
| class for checking if a type is a dual number or not More... | |
| struct | mfem::future::is_dual_number< dual< value_type, gradient_type > > |
| class for checking if a type is a dual number or not More... | |
Namespaces | |
| namespace | mfem |
| namespace | mfem::future |
Functions | |
| template<typename other_type , typename value_type , typename gradient_type , typename = typename std::enable_if< std::is_arithmetic<other_type>::value || is_dual_number<other_type>::value>::type> | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator+ (dual< value_type, gradient_type > a, other_type b) -> dual< value_type, gradient_type > |
| addition of a dual number and a non-dual number | |
| template<typename other_type , typename value_type , typename gradient_type , typename = typename std::enable_if< std::is_arithmetic<other_type>::value || is_dual_number<other_type>::value>::type> | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator+ (other_type a, dual< value_type, gradient_type > b) -> dual< value_type, gradient_type > |
| addition of a dual number and a non-dual number | |
| template<typename value_type_a , typename gradient_type_a , typename value_type_b , typename gradient_type_b > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator+ (dual< value_type_a, gradient_type_a > a, dual< value_type_b, gradient_type_b > b) -> dual< decltype(a.value+b.value), decltype(a.gradient+b.gradient)> |
| addition of two dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator- (dual< value_type, gradient_type > x) -> dual< value_type, gradient_type > |
| unary negation of a dual number | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator- (dual< value_type, gradient_type > a, real_t b) -> dual< value_type, gradient_type > |
| subtraction of a non-dual number from a dual number | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator- (real_t a, dual< value_type, gradient_type > b) -> dual< value_type, gradient_type > |
| subtraction of a dual number from a non-dual number | |
| template<typename value_type_a , typename gradient_type_a , typename value_type_b , typename gradient_type_b > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator- (dual< value_type_a, gradient_type_a > a, dual< value_type_b, gradient_type_b > b) -> dual< decltype(a.value - b.value), decltype(a.gradient - b.gradient)> |
| subtraction of two dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator* (const dual< value_type, gradient_type > &a, real_t b) -> dual< decltype(a.value *b), decltype(a.gradient *b)> |
| multiplication of a dual number and a non-dual number | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator* (real_t a, const dual< value_type, gradient_type > &b) -> dual< decltype(a *b.value), decltype(a *b.gradient)> |
| multiplication of a dual number and a non-dual number | |
| template<typename value_type_a , typename gradient_type_a , typename value_type_b , typename gradient_type_b > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator* (dual< value_type_a, gradient_type_a > a, dual< value_type_b, gradient_type_b > b) -> dual< decltype(a.value *b.value), decltype(b.value *a.gradient+a.value *b.gradient)> |
| multiplication of two dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator/ (const dual< value_type, gradient_type > &a, real_t b) -> dual< decltype(a.value/b), decltype(a.gradient/b)> |
| division of a dual number by a non-dual number | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator/ (real_t a, const dual< value_type, gradient_type > &b) -> dual< decltype(a/b.value), decltype(-(a/(b.value *b.value)) *b.gradient)> |
| division of a non-dual number by a dual number | |
| template<typename value_type_a , typename gradient_type_a , typename value_type_b , typename gradient_type_b > | |
| MFEM_HOST_DEVICE constexpr auto | mfem::future::operator/ (dual< value_type_a, gradient_type_a > a, dual< value_type_b, gradient_type_b > b) -> dual< decltype(a.value/b.value), decltype((a.gradient/b.value) -(a.value *b.gradient)/(b.value *b.value))> |
| division of two dual numbers | |
| mfem::future::mfem_binary_comparator_overload (<) mfem_binary_comparator_overload(< | |
| implement operator<= for dual numbers | |
| gradient_type MFEM_HOST_DEVICE dual< value_type, gradient_type > & | mfem::future::operator+= (dual< value_type, gradient_type > &a, const dual< value_type, gradient_type > &b) |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > & | mfem::future::operator-= (dual< value_type, gradient_type > &a, const dual< value_type, gradient_type > &b) |
| compound assignment (-) for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > & | mfem::future::operator+= (dual< value_type, gradient_type > &a, real_t b) |
compound assignment (+) for dual numbers with real_t righthand side | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > & | mfem::future::operator-= (dual< value_type, gradient_type > &a, real_t b) |
compound assignment (-) for dual numbers with real_t righthand side | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::abs (dual< value_type, gradient_type > x) |
| implementation of absolute value function for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::sqrt (dual< value_type, gradient_type > x) |
| implementation of square root for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::cos (dual< value_type, gradient_type > a) |
| implementation of cosine for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::sin (dual< value_type, gradient_type > a) |
| implementation of sine for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::sinh (dual< value_type, gradient_type > a) |
| implementation of sinh for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::acos (dual< value_type, gradient_type > a) |
| implementation of acos for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::asin (dual< value_type, gradient_type > a) |
| implementation of asin for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::tan (dual< value_type, gradient_type > a) |
| implementation of tan for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::atan (dual< value_type, gradient_type > a) |
| implementation of atan for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::exp (dual< value_type, gradient_type > a) |
| implementation of exponential function for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::log (dual< value_type, gradient_type > a) |
| implementation of the natural logarithm function for dual numbers | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::pow (dual< value_type, gradient_type > a, dual< value_type, gradient_type > b) |
implementation of a (dual) raised to the b (dual) power | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::pow (real_t a, dual< value_type, gradient_type > b) |
implementation of a (non-dual) raised to the b (dual) power | |
| template<typename value_type > | |
| MFEM_HOST_DEVICE value_type | mfem::future::pow (value_type a, value_type b) |
implementation of a (non-dual) raised to the b (non-dual) power | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE dual< value_type, gradient_type > | mfem::future::pow (dual< value_type, gradient_type > a, real_t b) |
implementation of a (dual) raised to the b (non-dual) power | |
| template<typename value_type , typename gradient_type , int... n> | |
| std::ostream & | mfem::future::operator<< (std::ostream &os, dual< value_type, gradient_type > A) |
overload of operator<< for dual to work with work with standard output streams | |
| MFEM_HOST_DEVICE constexpr dual< real_t, real_t > | mfem::future::make_dual (real_t x) |
| promote a value to a dual number of the appropriate type | |
| template<typename T > | |
| MFEM_HOST_DEVICE T | mfem::future::get_value (const T &arg) |
| return the "value" part from a given type. For non-dual types, this is just the identity function | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE gradient_type | mfem::future::get_value (dual< value_type, gradient_type > arg) |
| return the "value" part from a dual number type | |
| template<typename value_type , typename gradient_type > | |
| MFEM_HOST_DEVICE gradient_type | mfem::future::get_gradient (dual< value_type, gradient_type > arg) |
| return the "gradient" part from a dual number type | |
This file contains the declaration of a dual number class.
Definition in file dual.hpp.