15#ifndef dealii_differentiation_sd_symengine_math_h
16#define dealii_differentiation_sd_symengine_math_h
20#ifdef DEAL_II_WITH_SYMENGINE
24# include <type_traits>
58 pow(
const Expression &base,
const Expression &exponent);
71 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
90 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
105 sqrt(
const Expression &x);
114 cbrt(
const Expression &x);
124 exp(
const Expression &exponent);
133 log(
const Expression &x);
143 log(
const Expression &x,
const Expression &base);
156 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
175 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
190 log10(
const Expression &x);
207 sin(
const Expression &x);
217 cos(
const Expression &x);
227 tan(
const Expression &x);
237 csc(
const Expression &x);
247 sec(
const Expression &x);
257 cot(
const Expression &x);
268 asin(
const Expression &x);
279 acos(
const Expression &x);
290 atan(
const Expression &x);
301 atan2(
const Expression &y,
const Expression &x);
315 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
335 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
352 acsc(
const Expression &x);
363 asec(
const Expression &x);
374 acot(
const Expression &x);
392 sinh(
const Expression &x);
403 cosh(
const Expression &x);
414 tanh(
const Expression &x);
425 csch(
const Expression &x);
436 sech(
const Expression &x);
447 coth(
const Expression &x);
458 asinh(
const Expression &x);
469 acosh(
const Expression &x);
480 atanh(
const Expression &x);
491 acsch(
const Expression &x);
502 asech(
const Expression &x);
513 acoth(
const Expression &x);
529 abs(
const Expression &x);
539 fabs(
const Expression &x);
550 sign(
const Expression &x);
561 copysign(
const Expression &value,
const Expression &
sign);
571 floor(
const Expression &x);
581 ceil(
const Expression &x);
591 max(
const Expression &a,
const Expression &b);
604 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
623 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
639 min(
const Expression &a,
const Expression &b);
652 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
671 typename = std::enable_if_t<!std::is_same_v<NumberType, Expression>>>
687 erf(
const Expression &x);
697 erfc(
const Expression &x);
717# define DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(func) \
718 using ::Differentiation::SD::func;
720# define DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(func) \
721 using ::Differentiation::SD::func;
723 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(
pow)
724 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(
max)
725 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(
min)
726 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(copysign)
728 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
exp)
729 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(log10)
730 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
sqrt)
731 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(cbrt)
732 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(erf)
733 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(erfc)
735 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
log)
737 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
abs)
738 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(fabs)
739 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sign)
740 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(floor)
741 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(ceil)
743 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
sin)
744 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
cos)
745 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
tan)
746 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(csc)
747 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sec)
748 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(cot)
750 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
asin)
751 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
acos)
752 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
atan)
753 DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION(atan2)
754 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acsc)
755 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(asec)
756 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acot)
758 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
sinh)
759 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
cosh)
760 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
tanh)
761 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(csch)
762 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(sech)
763 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(coth)
765 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
asinh)
766 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
acosh)
767 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(
atanh)
768 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acsch)
769 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(asech)
770 DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION(acoth)
772# undef DEAL_II_EXPOSE_SYMENGINE_BINARY_MATH_FUNCTION
773# undef DEAL_II_EXPOSE_SYMENGINE_UNARY_MATH_FUNCTION
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
Expression cbrt(const Expression &x)
Expression atanh(const Expression &x)
Expression atan2(const Expression &y, const Expression &x)
Expression asin(const Expression &x)
Expression asinh(const Expression &x)
Expression cosh(const Expression &x)
Expression csc(const Expression &x)
Expression acsch(const Expression &x)
Expression abs(const Expression &x)
Expression fabs(const Expression &x)
Expression ceil(const Expression &x)
Expression coth(const Expression &x)
Expression sinh(const Expression &x)
Expression sec(const Expression &x)
Expression atan(const Expression &x)
Expression floor(const Expression &x)
Expression tanh(const Expression &x)
Expression acsc(const Expression &x)
Expression sin(const Expression &x)
Expression max(const Expression &a, const Expression &b)
Expression erfc(const Expression &x)
Expression exp(const Expression &exponent)
Expression asech(const Expression &x)
Expression pow(const Expression &base, const Expression &exponent)
Expression sign(const Expression &x)
Expression sech(const Expression &x)
Expression acos(const Expression &x)
Expression csch(const Expression &x)
Expression tan(const Expression &x)
Expression acosh(const Expression &x)
Expression min(const Expression &a, const Expression &b)
Expression asec(const Expression &x)
Expression cot(const Expression &x)
Expression cos(const Expression &x)
Expression erf(const Expression &x)
Expression acoth(const Expression &x)
Expression acot(const Expression &x)
Expression log(const Expression &x)
Expression sqrt(const Expression &x)
Expression log10(const Expression &x)
Expression copysign(const Expression &value, const Expression &sign)
inline ::VectorizedArray< Number, width > acosh(const ::VectorizedArray< Number, width > &x)
::VectorizedArray< Number, width > log(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > exp(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > tan(const ::VectorizedArray< Number, width > &)
inline ::VectorizedArray< Number, width > asinh(const ::VectorizedArray< Number, width > &x)
inline ::VectorizedArray< Number, width > tanh(const ::VectorizedArray< Number, width > &x)
inline ::VectorizedArray< Number, width > sinh(const ::VectorizedArray< Number, width > &x)
::VectorizedArray< Number, width > min(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > cos(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > sin(const ::VectorizedArray< Number, width > &)
inline ::VectorizedArray< Number, width > cosh(const ::VectorizedArray< Number, width > &x)
::VectorizedArray< Number, width > sqrt(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > pow(const ::VectorizedArray< Number, width > &, const Number p)
inline ::VectorizedArray< Number, width > atanh(const ::VectorizedArray< Number, width > &x)
inline ::VectorizedArray< Number, width > atan(const ::VectorizedArray< Number, width > &x)
::VectorizedArray< Number, width > abs(const ::VectorizedArray< Number, width > &)
inline ::VectorizedArray< Number, width > acos(const ::VectorizedArray< Number, width > &x)
inline ::VectorizedArray< Number, width > asin(const ::VectorizedArray< Number, width > &x)