Dev Scrape Sheet - RuleBasedIntegration/Rubi GitHub Wiki
Here is Alberts idea for re-typing integration rules:
- There will probably be only a few hundred integrand types, not thousands.
- Typing will obviously only be useful when rules make recursive calls that include type information.
- Typed rules will be defined first so they will be at the beginning of the downvalue rule list.
- Thus the pattern matcher can zip through the typed rules before trying to match an integrand with the untyped rules.
- I am in the process of modifying the algebraic function integration rules to require a type match, and including type information in calls on Int that they make.
- Also, I will add one generic, untyped rule for each algebraic function integrand type.
- When complete, we can make real-world, rather than contrived, tests to determine the effect of typing on performance.
A typical generic integration rule:
Int[(a_.+b_.x_)^m_.(c_.+d_.x_)^n_.,x_Symbol] :=
(GenericRule; Int["(a+bx)^m*(c+dx)^n",(a+bx)^m*(c+d*x)^n,x]) /; FreeQ[{a,b,c,d,m,n},x]