RuntimeError: ECL says: THROW: The catch MACSYMA-QUIT is undefined.

61 views
Skip to first unread message

Nikolay Perepelkin

unread,
Feb 24, 2017, 11:50:30 AM2/24/17
to sage-support

Hi
I found what is most likely a bug in Sage. I tried to execute the following code via Sage cloud:


var('d,E,P,delta,k1')
assume(d,'real')
assume(E,'real')
assume(P,'real')
assume(delta,'real')
assume(delta>0)
assume(k1,'real')


eq1=P==k1*d
eq2=delta==(d/E)^(1/2)


solve(eq1,d)
solve(eq2,E)
solve([eq1,eq2],d,E)


As the result I can see that each equation separately can be solved. But the last command tries to solve them as a system and fails with an error. This is the output:


(d, E, P, delta, k1)
[d == P/k1]
[E == d/delta^2]
Error in lines 12-12
Traceback (most recent call last):
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 982, in execute
exec compile(block+'\n', '', 'single') in namespace, locals
File "", line 1, in <module>
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/sage/symbolic/relation.py", line 865, in solve
sol_list = string_to_list_of_solutions(repr(s))
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/sage/symbolic/relation.py", line 540, in string_to_list_of_solutions
v = symbolic_expression_from_maxima_string(s, equals_sub=True)
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/sage/calculus/calculus.py", line 1847, in symbolic_expression_from_maxima_string
maxima.set('_tmp_',x)
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/sage/interfaces/maxima_lib.py", line 506, in set
self.eval(cmd)
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/sage/interfaces/maxima_lib.py", line 452, in _eval_line
maxima_eval("#$%s$" % statement)
File "sage/libs/ecl.pyx", line 795, in sage.libs.ecl.EclObject.__call__ (/projects/sage/sage-7.5/src/build/cythonized/sage/libs/ecl.c:8362)
lispargs = EclObject(list(args))
File "sage/libs/ecl.pyx", line 660, in sage.libs.ecl.EclObject.__init__ (/projects/sage/sage-7.5/src/build/cythonized/sage/libs/ecl.c:7885)
self.set_obj(python_to_ecl(args[0]))
File "sage/libs/ecl.pyx", line 475, in sage.libs.ecl.python_to_ecl (/projects/sage/sage-7.5/src/build/cythonized/sage/libs/ecl.c:6918)
L=cl_cons(python_to_ecl(pyobj[0]),Cnil)
File "sage/libs/ecl.pyx", line 459, in sage.libs.ecl.python_to_ecl (/projects/sage/sage-7.5/src/build/cythonized/sage/libs/ecl.c:6654)
return ecl_safe_read_string(s)
File "sage/libs/ecl.pyx", line 376, in sage.libs.ecl.ecl_safe_read_string (/projects/sage/sage-7.5/src/build/cythonized/sage/libs/ecl.c:6073)
o = ecl_safe_funcall(read_from_string_clobj,o)
File "sage/libs/ecl.pyx", line 357, in sage.libs.ecl.ecl_safe_funcall (/projects/sage/sage-7.5/src/build/cythonized/sage/libs/ecl.c:5872)
raise RuntimeError("ECL says: "+ecl_base_string_pointer_safe(s))
RuntimeError: ECL says: THROW: The catch MACSYMA-QUIT is undefined.


If I change the second equation to this: eq2=delta==(d/E)^(2) all three 'solve' commands work as expected:


(d, E, P, delta, k1)
[d == P/k1]
[E == -d/sqrt(delta), E == d/sqrt(delta)]
[[d == P/k1, E == -P/(sqrt(delta)*k1)], [d == P/k1, E == P/(sqrt(delta)*k1)]]


Best regards
Nikolay

Reply all
Reply to author
Forward
0 new messages