GSoC 2020 - Week 7
05 Jul 2020Key highlights
of this week’s work are:
-
Improved the limit evaluations of Power objects
-
This PR improves the limit evaluations of Power objects. We first check if the limit expression is a
Power object
and then accordingly evaluate the limit depending on different cases. First of all, we expressb**e
in the form ofexp(e*log(b))
. After this, we check ife*log(b)
ismeromorphic
and accordingly evaluate the final result. This check helps us to handle the trivial cases in the beginning itself.Now, if
e*log(b)
is not meromorphic, then we separately evaluate the limit of the base and the exponent. This helps us to determine theindeterminant form
of the limit expression if present. As we know, there are 3 indeterminate forms corresponding to power objects:0**0
,oo**0
, and1**oo
, which need to be handled carefully. If there is no indeterminate form present, then no further evaluations are required. Otherwise, we handle all the three cases separately and correctly evaluate the final result.We also added some code to improve the evaluation of limits having
Abs()
expressions. For everyAbs()
term present in the limit expression, we replace it simply by its argument or the negative of its argument, depending on whether the value of the limit of the argument is greater than zero or less than zero for the given limit variable.Finally, we were able to merge this after resolving some failing testcases.
-
-
Fixed limit evaluations involving error functions
-
The incorrect limit evaluations of
error functions
were mainly because thetractable
rewrite was wrong and did not handle all the possible cases. For a proper rewrite, it was required that the limit variable be passed to the corresponding rewrite method. This is because, to define a correct rewrite we had to evaluate the limit of the argument of theerror function
, for the passed limit variable. Thus, we added a default argumentlimitvar
to all thetractable rewrite
methods and resolved this issue. While debugging, we also noticed that the_eval_as_leading_term
method of error function was wrong, hence it was also fixed.Finally, we were able to merge this after resolving some failing testcases.
-