16 #ifndef dealii_differentiation_sd_symengine_math_h 17 #define dealii_differentiation_sd_symengine_math_h 19 #include <deal.II/base/config.h> 21 #ifdef DEAL_II_WITH_SYMENGINE 23 # include <deal.II/differentiation/sd/symengine_number_types.h> 25 # include <type_traits> 27 DEAL_II_NAMESPACE_OPEN
71 template <
typename NumberType,
72 typename =
typename std::enable_if<
73 !std::is_same<NumberType, Expression>::value>::type>
90 template <
typename NumberType,
91 typename =
typename std::enable_if<
92 !std::is_same<NumberType, Expression>::value>::type>
107 sqrt(
const Expression &x);
116 cbrt(
const Expression &x);
126 exp(
const Expression &exponent);
135 log(
const Expression &x);
145 log(
const Expression &x,
const Expression &base);
156 template <
typename NumberType,
157 typename =
typename std::enable_if<
158 !std::is_same<NumberType, Expression>::value>::type>
175 template <
typename NumberType,
176 typename =
typename std::enable_if<
177 !std::is_same<NumberType, Expression>::value>::type>
192 log10(
const Expression &x);
209 sin(
const Expression &x);
219 cos(
const Expression &x);
229 tan(
const Expression &x);
239 csc(
const Expression &x);
249 sec(
const Expression &x);
259 cot(
const Expression &x);
270 asin(
const Expression &x);
281 acos(
const Expression &x);
292 atan(
const Expression &x);
303 atan2(
const Expression &y,
const Expression &x);
315 template <
typename NumberType,
316 typename =
typename std::enable_if<
317 !std::is_same<NumberType, Expression>::value>::type>
335 template <
typename NumberType,
336 typename =
typename std::enable_if<
337 !std::is_same<NumberType, Expression>::value>::type>
354 acsc(
const Expression &x);
365 asec(
const Expression &x);
376 acot(
const Expression &x);
394 sinh(
const Expression &x);
405 cosh(
const Expression &x);
416 tanh(
const Expression &x);
427 csch(
const Expression &x);
438 sech(
const Expression &x);
449 coth(
const Expression &x);
460 asinh(
const Expression &x);
471 acosh(
const Expression &x);
482 atanh(
const Expression &x);
493 acsch(
const Expression &x);
504 asech(
const Expression &x);
515 acoth(
const Expression &x);
531 abs(
const Expression &x);
541 fabs(
const Expression &x);
552 sign(
const Expression &x);
563 copysign(
const Expression &value,
const Expression &
sign);
573 floor(
const Expression &x);
583 ceil(
const Expression &x);
593 max(
const Expression &a,
const Expression &b);
604 template <
typename NumberType,
605 typename =
typename std::enable_if<
606 !std::is_same<NumberType, Expression>::value>::type>
623 template <
typename NumberType,
624 typename =
typename std::enable_if<
625 !std::is_same<NumberType, Expression>::value>::type>
641 min(
const Expression &a,
const Expression &b);
652 template <
typename NumberType,
653 typename =
typename std::enable_if<
654 !std::is_same<NumberType, Expression>::value>::type>
671 template <
typename NumberType,
672 typename =
typename std::enable_if<
673 !std::is_same<NumberType, Expression>::value>::type>
689 erf(
const Expression &x);
699 erfc(
const Expression &x);
706 DEAL_II_NAMESPACE_CLOSE
719 # define DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(func) \ 720 using ::Differentiation::SD::func; 722 # define DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(func) \ 723 using ::Differentiation::SD::func; 725 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(pow)
726 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(max)
727 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(min)
728 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(copysign)
730 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(exp)
731 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(log10)
732 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sqrt)
733 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(cbrt)
734 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(erf)
735 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(erfc)
737 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(log)
739 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(abs)
740 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(fabs)
741 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sign)
742 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(floor)
743 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(ceil)
745 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sin)
746 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(cos)
747 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(tan)
748 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(csc)
749 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sec)
750 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(cot)
752 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(asin)
753 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acos)
754 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(atan)
755 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(atan2)
756 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acsc)
757 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(asec)
758 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acot)
760 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sinh)
761 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(cosh)
762 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(tanh)
763 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(csch)
764 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sech)
765 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(coth)
767 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(asinh)
768 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acosh)
769 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(atanh)
770 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acsch)
771 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(asech)
772 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acoth)
774 # undef DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION 775 # undef DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION 781 #endif // DEAL_II_WITH_SYMENGINE Expression copysign(const Expression &value, const Expression &sign)
Expression sign(const Expression &x)
Expression asinh(const Expression &x)
Expression cosh(const Expression &x)
Expression acoth(const Expression &x)
Expression pow(const Expression &base, const Expression &exponent)
Expression log10(const Expression &x)
Expression sinh(const Expression &x)
Expression asec(const Expression &x)
Expression atan2(const Expression &y, const Expression &x)
Expression cot(const Expression &x)
Expression max(const Expression &a, const Expression &b)
Expression csc(const Expression &x)
Expression atanh(const Expression &x)
Expression asech(const Expression &x)
Expression cbrt(const Expression &x)
Expression tanh(const Expression &x)
Expression ceil(const Expression &x)
Expression sqrt(const Expression &x)
Expression acos(const Expression &x)
Expression coth(const Expression &x)
Expression exp(const Expression &exponent)
Expression sech(const Expression &x)
Expression log(const Expression &x)
Expression fabs(const Expression &x)
Expression cos(const Expression &x)
Expression sin(const Expression &x)
Expression erfc(const Expression &x)
Expression asin(const Expression &x)
Expression tan(const Expression &x)
Expression erf(const Expression &x)
Expression abs(const Expression &x)
Expression acsc(const Expression &x)
Expression min(const Expression &a, const Expression &b)
Expression acsch(const Expression &x)
Expression acosh(const Expression &x)
Expression csch(const Expression &x)
Expression acot(const Expression &x)
Expression atan(const Expression &x)
Expression sec(const Expression &x)
Expression floor(const Expression &x)