@@ -117,73 +117,81 @@ end
117117@syms 𝛷 (x, u)
118118
119119partial_int_rules = [
120- # trigonometric functions
121- @rule 𝛷 (~ x, sin (~ u)) => (cos (~ u) + si (~ u), ~ u)
122- @rule 𝛷 (~ x, cos (~ u)) => (sin (~ u) + ci (~ u), ~ u)
123- @rule 𝛷 (~ x, tan (~ u)) => (log (cos (~ u)), ~ u)
124- @rule 𝛷 (~ x, csc (~ u)) => (log (csc (~ u) + cot (~ u)) + log (sin (~ u)), ~ u)
125- @rule 𝛷 (~ x, sec (~ u)) => (log (sec (~ u) + tan (~ u)) + log (cos (~ u)), ~ u)
126- @rule 𝛷 (~ x, cot (~ u)) => (log (sin (~ u)), ~ u)
127- # hyperbolic functions
128- @rule 𝛷 (~ x, sinh (~ u)) => (cosh (~ u), ~ u)
129- @rule 𝛷 (~ x, cosh (~ u)) => (sinh (~ u), ~ u)
130- @rule 𝛷 (~ x, tanh (~ u)) => (log (cosh (~ u)), ~ u)
131- @rule 𝛷 (~ x, csch (~ u)) => (log (tanh (~ u / 2 )), ~ u)
132- @rule 𝛷 (~ x, sech (~ u)) => (atan (sinh (~ u)), ~ u)
133- @rule 𝛷 (~ x, coth (~ u)) => (log (sinh (~ u)), ~ u)
134- # 1/trigonometric functions
135- @rule 𝛷 (~ x, 1 / sin (~ u)) => (log (csc (~ u) + cot (~ u)) + log (sin (~ u)), ~ u)
136- @rule 𝛷 (~ x, 1 / cos (~ u)) => (log (sec (~ u) + tan (~ u)) + log (cos (~ u)), ~ u)
137- @rule 𝛷 (~ x, 1 / tan (~ u)) => (log (sin (~ u)) + log (tan (~ u)), ~ u)
138- @rule 𝛷 (~ x, 1 / csc (~ u)) => (cos (~ u) + log (csc (~ u)), ~ u)
139- @rule 𝛷 (~ x, 1 / sec (~ u)) => (sin (~ u) + log (sec (~ u)), ~ u)
140- @rule 𝛷 (~ x, 1 / cot (~ u)) => (log (cos (~ u)) + log (cot (~ u)), ~ u)
141- # 1/hyperbolic functions
142- @rule 𝛷 (~ x, 1 / sinh (~ u)) => (log (tanh (~ u / 2 )) + log (sinh (~ u)), ~ u)
143- @rule 𝛷 (~ x, 1 / cosh (~ u)) => (atan (sinh (~ u)) + log (cosh (~ u)), ~ u)
144- @rule 𝛷 (~ x, 1 / tanh (~ u)) => (log (sinh (~ u)) + log (tanh (~ u)), ~ u)
145- @rule 𝛷 (~ x, 1 / csch (~ u)) => (cosh (~ u) + log (csch (~ u)), ~ u)
146- @rule 𝛷 (~ x, 1 / sech (~ u)) => (sinh (~ u) + log (sech (~ u)), ~ u)
147- @rule 𝛷 (~ x, 1 / coth (~ u)) => (log (cosh (~ u)) + log (coth (~ u)), ~ u)
148- # inverse trigonometric functions
149- @rule 𝛷 (~ x, asin (~ u)) => (~ u * asin (~ u) + sqrt (1 - ~ u * ~ u), ~ u)
150- @rule 𝛷 (~ x, acos (~ u)) => (~ u * acos (~ u) + sqrt (1 - ~ u * ~ u), ~ u)
151- @rule 𝛷 (~ x, atan (~ u)) => (~ u * atan (~ u) + log (~ u * ~ u + 1 ), ~ u)
152- @rule 𝛷 (~ x, acsc (~ u)) => (~ u * acsc (~ u) + atanh (1 - ^ (~ u, - 2 )), ~ u)
153- @rule 𝛷 (~ x, asec (~ u)) => (~ u * asec (~ u) + acosh (~ u), ~ u)
154- @rule 𝛷 (~ x, acot (~ u)) => (~ u * acot (~ u) + log (~ u * ~ u + 1 ), ~ u)
155- # inverse hyperbolic functions
156- @rule 𝛷 (~ x, asinh (~ u)) => (~ u * asinh (~ u) + sqrt (~ u * ~ u + 1 ), ~ u)
157- @rule 𝛷 (~ x, acosh (~ u)) => (~ u * acosh (~ u) + sqrt (~ u * ~ u - 1 ), ~ u)
158- @rule 𝛷 (~ x, atanh (~ u)) => (~ u * atanh (~ u) + log (~ u + 1 ), ~ u)
159- @rule 𝛷 (~ x, acsch (~ u)) => (acsch (~ u), ~ u)
160- @rule 𝛷 (~ x, asech (~ u)) => (asech (~ u), ~ u)
161- @rule 𝛷 (~ x, acoth (~ u)) => (~ u * acot (~ u) + log (~ u + 1 ), ~ u)
162- # logarithmic and exponential functions
163- @rule 𝛷 (~ x, log (~ u)) => (~ u + ~ u * log (~ u) +
164- sum (pow_minus_rule (~ u, ~ x, - 1 ); init = one (~ u)),
165- ~ u)
166- @rule 𝛷 (~ x, 1 / log (~ u)) => (log (log (~ u)) + li (~ u), ~ u)
167- @rule 𝛷 (~ x, exp (~ u)) => (exp (~ u) + ei (~ u) + erfi_ (~ x), ~ u)
168- @rule 𝛷 (~ x, ^ (exp (~ u), ~ k:: is_neg )) => (^ (exp (- ~ u), - ~ k), ~ u)
169- # square-root functions
170- @rule 𝛷 (~ x, ^ (~ u, ~ k:: is_abs_half )) => (sum (sqrt_rule (~ u, ~ x, ~ k); init = one (~ u)), ~ u);
171- @rule 𝛷 (~ x, sqrt (~ u)) => (sum (sqrt_rule (~ u, ~ x, 0.5 ); init = one (~ u)), ~ u);
172- @rule 𝛷 (~ x, 1 / sqrt (~ u)) => (sum (sqrt_rule (~ u, ~ x, - 0.5 ); init = one (~ u)), ~ u);
173- # rational functions
174- @rule 𝛷 (~ x, 1 / ^ (~ u:: is_univar_poly , ~ k:: is_pos_int )) => (sum (pow_minus_rule (~ u,
175- ~ x,
176- - ~ k);
177- init = one (~ u)),
178- ~ u)
179- @rule 𝛷 (~ x, 1 / ~ u:: is_univar_poly ) => (sum (pow_minus_rule (~ u, ~ x, - 1 ); init = one (~ u)),
180- ~ u);
181- @rule 𝛷 (~ x, ^ (~ u, - 1 )) => (log (~ u) + ~ u * log (~ u), ~ u)
182- @rule 𝛷 (~ x, ^ (~ u, ~ k:: is_neg_int )) => (sum (^ (~ u, i) for i in (~ k + 1 ): - 1 ), ~ u)
183- @rule 𝛷 (~ x, 1 / ~ u) => (log (~ u), ~ u)
184- @rule 𝛷 (~ x, ^ (~ u, ~ k:: is_pos_int )) => (sum (^ (~ u, i + 1 ) for i in 1 : (~ k + 1 )), ~ u)
185- @rule 𝛷 (~ x, 1 ) => (𝑥, 1 )
186- @rule 𝛷 (~ x, ~ u) => ((~ u + ^ (~ u, 2 )), ~ u)]
120+ # trigonometric functions
121+ @rule 𝛷 (~ x, sin (~ u)) => (cos (~ u) + si (~ u), ~ u)
122+ @rule 𝛷 (~ x, cos (~ u)) => (sin (~ u) + ci (~ u), ~ u)
123+ @rule 𝛷 (~ x, tan (~ u)) => (log (cos (~ u)), ~ u)
124+ @rule 𝛷 (~ x, csc (~ u)) => (log (csc (~ u) + cot (~ u)) + log (sin (~ u)), ~ u)
125+ @rule 𝛷 (~ x, sec (~ u)) => (log (sec (~ u) + tan (~ u)) + log (cos (~ u)), ~ u)
126+ @rule 𝛷 (~ x, cot (~ u)) => (log (sin (~ u)), ~ u)
127+ # hyperbolic functions
128+ @rule 𝛷 (~ x, sinh (~ u)) => (cosh (~ u), ~ u)
129+ @rule 𝛷 (~ x, cosh (~ u)) => (sinh (~ u), ~ u)
130+ @rule 𝛷 (~ x, tanh (~ u)) => (log (cosh (~ u)), ~ u)
131+ @rule 𝛷 (~ x, csch (~ u)) => (log (tanh (~ u / 2 )), ~ u)
132+ @rule 𝛷 (~ x, sech (~ u)) => (atan (sinh (~ u)), ~ u)
133+ @rule 𝛷 (~ x, coth (~ u)) => (log (sinh (~ u)), ~ u)
134+ # 1/trigonometric functions
135+ @rule 𝛷 (~ x, 1 / sin (~ u)) => (log (csc (~ u) + cot (~ u)) + log (sin (~ u)), ~ u)
136+ @rule 𝛷 (~ x, 1 / cos (~ u)) => (log (sec (~ u) + tan (~ u)) + log (cos (~ u)), ~ u)
137+ @rule 𝛷 (~ x, 1 / tan (~ u)) => (log (sin (~ u)) + log (tan (~ u)), ~ u)
138+ @rule 𝛷 (~ x, 1 / csc (~ u)) => (cos (~ u) + log (csc (~ u)), ~ u)
139+ @rule 𝛷 (~ x, 1 / sec (~ u)) => (sin (~ u) + log (sec (~ u)), ~ u)
140+ @rule 𝛷 (~ x, 1 / cot (~ u)) => (log (cos (~ u)) + log (cot (~ u)), ~ u)
141+ # 1/hyperbolic functions
142+ @rule 𝛷 (~ x, 1 / sinh (~ u)) => (log (tanh (~ u / 2 )) + log (sinh (~ u)), ~ u)
143+ @rule 𝛷 (~ x, 1 / cosh (~ u)) => (atan (sinh (~ u)) + log (cosh (~ u)), ~ u)
144+ @rule 𝛷 (~ x, 1 / tanh (~ u)) => (log (sinh (~ u)) + log (tanh (~ u)), ~ u)
145+ @rule 𝛷 (~ x, 1 / csch (~ u)) => (cosh (~ u) + log (csch (~ u)), ~ u)
146+ @rule 𝛷 (~ x, 1 / sech (~ u)) => (sinh (~ u) + log (sech (~ u)), ~ u)
147+ @rule 𝛷 (~ x, 1 / coth (~ u)) => (log (cosh (~ u)) + log (coth (~ u)), ~ u)
148+ # inverse trigonometric functions
149+ @rule 𝛷 (~ x, asin (~ u)) => (~ u * asin (~ u) + sqrt (1 - ~ u * ~ u), ~ u)
150+ @rule 𝛷 (~ x, acos (~ u)) => (~ u * acos (~ u) + sqrt (1 - ~ u * ~ u), ~ u)
151+ @rule 𝛷 (~ x, atan (~ u)) => (~ u * atan (~ u) + log (~ u * ~ u + 1 ), ~ u)
152+ @rule 𝛷 (~ x, acsc (~ u)) => (~ u * acsc (~ u) + atanh (1 - ^ (~ u, - 2 )), ~ u)
153+ @rule 𝛷 (~ x, asec (~ u)) => (~ u * asec (~ u) + acosh (~ u), ~ u)
154+ @rule 𝛷 (~ x, acot (~ u)) => (~ u * acot (~ u) + log (~ u * ~ u + 1 ), ~ u)
155+ # inverse hyperbolic functions
156+ @rule 𝛷 (~ x, asinh (~ u)) => (~ u * asinh (~ u) + sqrt (~ u * ~ u + 1 ), ~ u)
157+ @rule 𝛷 (~ x, acosh (~ u)) => (~ u * acosh (~ u) + sqrt (~ u * ~ u - 1 ), ~ u)
158+ @rule 𝛷 (~ x, atanh (~ u)) => (~ u * atanh (~ u) + log (~ u + 1 ), ~ u)
159+ @rule 𝛷 (~ x, acsch (~ u)) => (acsch (~ u), ~ u)
160+ @rule 𝛷 (~ x, asech (~ u)) => (asech (~ u), ~ u)
161+ @rule 𝛷 (~ x, acoth (~ u)) => (~ u * acot (~ u) + log (~ u + 1 ), ~ u)
162+ # logarithmic and exponential functions
163+ @rule 𝛷 (~ x, log (~ u)) => (
164+ ~ u + ~ u * log (~ u) +
165+ sum (pow_minus_rule (~ u, ~ x, - 1 ); init = one (~ u)),
166+ ~ u)
167+ @rule 𝛷 (~ x, 1 / log (~ u)) => (log (log (~ u)) + li (~ u), ~ u)
168+ @rule 𝛷 (~ x, exp (~ u)) => (exp (~ u) + ei (~ u) + erfi_ (~ x), ~ u)
169+ @rule 𝛷 (~ x, ^ (exp (~ u), ~ k:: is_neg )) => (^ (exp (- ~ u), - ~ k), ~ u)
170+ # square-root functions
171+ @rule 𝛷 (~ x, ^ (~ u, ~ k:: is_abs_half )) => (
172+ sum (sqrt_rule (~ u, ~ x, ~ k); init = one (~ u)), ~ u)
173+ @rule 𝛷 (~ x, sqrt (~ u)) => (
174+ sum (sqrt_rule (~ u, ~ x, 0.5 ); init = one (~ u)), ~ u)
175+ @rule 𝛷 (~ x, 1 / sqrt (~ u)) => (
176+ sum (sqrt_rule (~ u, ~ x, - 0.5 ); init = one (~ u)), ~ u)
177+ # rational functions
178+ @rule 𝛷 (~ x, 1 / ^ (~ u:: is_univar_poly , ~ k:: is_pos_int )) => (
179+ sum (pow_minus_rule (~ u,
180+ ~ x,
181+ - ~ k);
182+ init = one (~ u)),
183+ ~ u)
184+ @rule 𝛷 (~ x, 1 / ~ u:: is_univar_poly ) => (
185+ sum (pow_minus_rule (~ u, ~ x, - 1 ); init = one (~ u)),
186+ ~ u)
187+ @rule 𝛷 (~ x, ^ (~ u, - 1 )) => (log (~ u) + ~ u * log (~ u), ~ u)
188+ @rule 𝛷 (~ x, ^ (~ u, ~ k:: is_neg_int )) => (
189+ sum (^ (~ u, i) for i in (~ k + 1 ): - 1 ), ~ u)
190+ @rule 𝛷 (~ x, 1 / ~ u) => (log (~ u), ~ u)
191+ @rule 𝛷 (~ x, ^ (~ u, ~ k:: is_pos_int )) => (
192+ sum (^ (~ u, i + 1 ) for i in 1 : (~ k + 1 )), ~ u)
193+ @rule 𝛷 (~ x, 1 ) => (𝑥, 1 )
194+ @rule 𝛷 (~ x, ~ u) => ((~ u + ^ (~ u, 2 )), ~ u)]
187195
188196function apply_partial_int_rules (eq, x)
189197 y, dy = Chain (partial_int_rules)(𝛷 (x, value (eq)))
0 commit comments