In[1]:= Inverse[{{g[0, 0], g[0, 1]}, {g[0, 1], g[1, 1]}}]
Out[1]= {{g[1, 1] / (g[0, 0] g[1, 1] - g[0, 1] ^ 2), -g[0, 1] / (g[0, 0] g[1, 1] - g[0, 1] ^ 2)}, {-g[0, 1] / (g[0, 0] g[1, 1] - g[0, 1] ^ 2), g[0, 0] / (g[0, 0] g[1, 1] - g[0, 1] ^ 2)}}
The following cases work as expected.
Triangular matrix:
In[1]:= Inverse[{{g[0,0], g[0,1]}, {0, g[1,1]}}]
Inverting a matrix of symbols:
In[1]:= Inverse[{{g00, g01}, {g01, g11}}]
Traceback (most recent call last):
File "/usr/local/bin/mathics", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.8/dist-packages/mathics/main.py", line 402, in main
result = evaluation.evaluate(query, timeout=settings.TIMEOUT)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/evaluation.py", line 361, in evaluate
result = run_with_timeout_and_stack(evaluate, timeout, self)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/evaluation.py", line 118, in run_with_timeout_and_stack
return request()
File "/usr/local/lib/python3.8/dist-packages/mathics/core/evaluation.py", line 332, in evaluate
self.last_eval = query.evaluate(self)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/expression.py", line 1315, in evaluate
expr, reevaluate = expr.evaluate_next(evaluation)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/expression.py", line 1449, in evaluate_next
result = rule.apply(new, evaluation, fully=False)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/rules.py", line 67, in apply
self.pattern.match(yield_match, expression, {}, evaluation, fully=fully)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 291, in match
self.head.match(yield_head, expression.get_head(), vars, evaluation)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 159, in match
yield_func(vars, None)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 281, in yield_head
self.get_pre_choices(
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 429, in get_pre_choices
yield_func(vars)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 258, in yield_choice
self.match_leaf(
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 655, in match_leaf
self.get_wrappings(
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 456, in get_wrappings
yield_func(items[0])
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 643, in yield_wrapping
leaf.match(
File "/usr/local/lib/python3.8/dist-packages/mathics/builtin/patterns.py", line 852, in match
self.pattern.match(yield_func, expression, new_vars, evaluation)
File "/usr/local/lib/python3.8/dist-packages/mathics/builtin/patterns.py", line 1050, in match
yield_func(vars, None)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/pattern.py", line 640, in match_yield
yield_func(new_vars, items_rest)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/rules.py", line 42, in yield_match
new_expression = self.do_replace(expression, vars, options, evaluation)
File "/usr/local/lib/python3.8/dist-packages/mathics/core/rules.py", line 131, in do_replace
return self.function(evaluation=evaluation, **vars_noctx)
File "/usr/local/lib/python3.8/dist-packages/mathics/builtin/numbers/linalg.py", line 209, in apply
inv = matrix.inv()
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/matrices.py", line 2199, in inv
return _inv(self, method=method, iszerofunc=iszerofunc,
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/inverse.py", line 459, in _inv
rv = M.inverse_GE(iszerofunc=iszerofunc)
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/matrices.py", line 2184, in inverse_GE
return _inv_GE(self, iszerofunc=iszerofunc)
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/inverse.py", line 242, in _inv_GE
red = big.rref(iszerofunc=iszerofunc, simplify=True)[0]
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/matrices.py", line 170, in rref
return _rref(self, iszerofunc=iszerofunc, simplify=simplify,
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/reductions.py", line 305, in _rref
mat, pivot_cols, _ = _row_reduce(M, iszerofunc, simpfunc,
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/reductions.py", line 127, in _row_reduce
mat, pivot_cols, swaps = _row_reduce_list(list(M), M.rows, M.cols, M.one,
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/reductions.py", line 68, in _row_reduce_list
assumed_nonzero, newly_determined = _find_reasonable_pivot(
File "/usr/local/lib/python3.8/dist-packages/sympy/matrices/determinant.py", line 104, in _find_reasonable_pivot
if x.equals(S.Zero):
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 751, in equals
constant = diff.is_constant(simplify=False, failing_number=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 674, in is_constant
if b is not None and b is not S.NaN and b.equals(a) is False:
File "/usr/local/lib/python3.8/dist-packages/sympy/core/expr.py", line 741, in equals
diff = factor_terms(simplify(self - other), radical=True)
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/simplify.py", line 722, in simplify
short = shorter(powsimp(expr, combine='exp', deep=True), powsimp(expr), expr)
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 116, in powsimp
expr = expr.func(*[recurse(w) for w in expr.args])
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 116, in <listcomp>
expr = expr.func(*[recurse(w) for w in expr.args])
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 107, in recurse
return powsimp(arg, _deep, _combine, _force, _measure)
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 116, in powsimp
expr = expr.func(*[recurse(w) for w in expr.args])
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 116, in <listcomp>
expr = expr.func(*[recurse(w) for w in expr.args])
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 107, in recurse
return powsimp(arg, _deep, _combine, _force, _measure)
File "/usr/local/lib/python3.8/dist-packages/sympy/simplify/powsimp.py", line 116, in powsimp
expr = expr.func(*[recurse(w) for w in expr.args])
File "/usr/local/lib/python3.8/dist-packages/mathics/core/convert.py", line 65, in __new__
return SympyExpression(self.expr)
AttributeError: 'SympyExpression' object has no attribute 'expr'