diff --git a/mathics/builtin/intfns/combinatorial.py b/mathics/builtin/intfns/combinatorial.py index ae3c4df0e..a468aac24 100644 --- a/mathics/builtin/intfns/combinatorial.py +++ b/mathics/builtin/intfns/combinatorial.py @@ -416,9 +416,9 @@ class PolygonalNumber(Builtin): See also :Binomial: - doc/reference-of-built-in-symbols/integer-functions/combinatorial-functions/binomial/, and + /doc/reference-of-built-in-symbols/integer-functions/combinatorial-functions/binomial/, and :RegularPolygon: - doc/reference-of-built-in-symbols/drawing-graphics/regularpolygon/. + /doc/reference-of-built-in-symbols/drawing-graphics/regularpolygon/. """ attributes = A_LISTABLE | A_NUMERIC_FUNCTION | A_PROTECTED | A_READ_PROTECTED diff --git a/mathics/builtin/numbers/calculus.py b/mathics/builtin/numbers/calculus.py index 0efd55114..80bb3ef7a 100644 --- a/mathics/builtin/numbers/calculus.py +++ b/mathics/builtin/numbers/calculus.py @@ -952,8 +952,10 @@ class Integers(Builtin): class Integrate(SympyFunction): r""" - :WMA link: - https://reference.wolfram.com/language/ref/Integrate.html + :Integral:https://en.wikipedia.org/wiki/Integral (:SymPy: + https://docs.sympy.org/latest/modules/integrals/integrals.html, \ + :WMA: + https://reference.wolfram.com/language/ref/Integrate.html)
'Integrate[$f$, $x$]' @@ -984,18 +986,20 @@ class Integrate(SympyFunction): >> Integrate[4 Sin[x] Cos[x], x] = 2 Sin[x] ^ 2 - > Integrate[-Infinity, {x, 0, Infinity}] + >> Integrate[-Infinity, {x, 0, Infinity}] = -Infinity - > Integrate[-Infinity, {x, Infinity, 0}] - = Infinity + Integrating something ill-defined returns the expression untouched: - Integration in TeX: + >> Integrate[1, {x, Infinity, 0}] + = Integrate[1, {x, Infinity, 0}] + + Here how is an example of converting integral equation to TeX: >> Integrate[f[x], {x, a, b}] // TeXForm = \int_a^b f\left[x\right] \, dx Sometimes there is a loss of precision during integration. - You can check the precision of your result with the following sequence + You can check the precision of your result with the following sequence \ of commands. >> Integrate[Abs[Sin[phi]], {phi, 0, 2Pi}] // N = 4. @@ -1114,6 +1118,10 @@ def eval(self, f, xs, evaluation: Evaluation, options: dict): # type: ignore[ov # e.g. NotImplementedError: Result depends on the sign of # -sign(_u`j)*sign(_u`w) return + except TypeError: + # SymPy can give this. For example: + # Integrate[-Infinity, {x, 0, Infinity}] + return if prec is not None and isinstance(sympy_result, sympy.Integral): # TODO MaxExtraPrecision -> maxn sympy_result = sympy_result.evalf(dps(prec))