10 auto neg_u_sq = SymbolicExpr::multiply(SymbolicExpr::number(-1), u_sq);
11 auto one_minus_u_sq = SymbolicExpr::add(SymbolicExpr::number(1), neg_u_sq);
12 auto pat = *SymbolicExpr::power(SymbolicExpr::sqrt(one_minus_u_sq), SymbolicExpr::number(-1));
19 auto res = *SymbolicExpr::multiply(
20 SymbolicExpr::number(Rational(1, 2)),
24 auto root = *SymbolicExpr::sqrt(square);
30 auto one_plus_u_sq = SymbolicExpr::add(SymbolicExpr::number(1), u_sq);
31 auto pat = *SymbolicExpr::power(one_plus_u_sq, SymbolicExpr::number(-1));
43 auto sum = SymbolicExpr::add(u_sq, a_sq);
44 auto pat = *SymbolicExpr::power(SymbolicExpr::sqrt(sum), SymbolicExpr::number(-1));
48 auto sum_r = SymbolicExpr::add(u_sq_r, a_sq_r);
59 auto neg_a_sq = SymbolicExpr::multiply(SymbolicExpr::number(-1), a_sq);
60 auto diff = SymbolicExpr::add(u_sq, neg_a_sq);
61 auto pat = *SymbolicExpr::power(SymbolicExpr::sqrt(diff), SymbolicExpr::number(-1));
65 auto neg_a_sq_r = SymbolicExpr::multiply(SymbolicExpr::number(-1), a_sq_r);
66 auto diff_r = SymbolicExpr::add(u_sq_r, neg_a_sq_r);
80 auto sum = SymbolicExpr::add(u_sq, a_sq);
81 auto pat = *SymbolicExpr::power(sum, SymbolicExpr::number(-1));
94 auto neg_a_sq = SymbolicExpr::multiply(SymbolicExpr::number(-1), a_sq);
95 auto diff = SymbolicExpr::add(u_sq, neg_a_sq);
96 auto pat = *SymbolicExpr::power(diff, SymbolicExpr::number(-1));
99 auto inv_2a = SymbolicExpr::power(two_a, SymbolicExpr::number(-1));
103 auto frac = SymbolicExpr::divide(u_minus_a, u_plus_a);
104 auto res = *SymbolicExpr::multiply(inv_2a, SymbolicExpr::ln(
make_unary_function(FT::Abs, frac)));
122 auto res = *SymbolicExpr::divide(
127 auto it_u = m.find(
"_u");
128 if (it_u == m.end()) {
return false; }
130 if (!
v ||
v->is_constant() ||
v->name() != var) {
return false; }
131 auto it_n = m.find(
"_n");
132 if (it_n == m.end()) {
return false; }
137 context.limits().max_ast_nodes,
"integrate.power");
140 std::optional<detail::AssumptionFacts> assumptions;
141 if (
context.assumptions()) { assumptions.emplace(*
context.assumptions()); }
150 auto res = *SymbolicExpr::multiply(