I can't use SR(sage_eval(' expression')) Now all my integral are failing. Here is an example
>sage │ SageMath version 9.8, Release Date: 2023-02-11 │ │ Using Python 3.11.1. Type "help()" for help. │ sage: var('x') x sage: SR(sage_eval('sin(x)')) --------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In [3], line 1 ----> 1 SR(sage_eval('sin(x)')) File ~/TMP/sage-9.8/src/sage/misc/sage_eval.py:198, in sage_eval(source, locals, cmds, preparse) 196 return locals['_sage_eval_returnval_'] 197 else: --> 198 return eval(source, sage.all.__dict__, locals) File <string>:1 NameError: name 'x' is not defined But sage: SR('sin(x)') sin(x) Works. So adding sage_eval() did not work. --Nasser On Wednesday, April 26, 2023 at 1:33:26 AM UTC-5 Nils Bruin wrote: > I think the problem is that the SR exression parses does not know about > python's "(a,b)" tuple notation. If you replace the round brackets with > square brackets, it does seem to work; at least for the example you give: > > sage: SR('hypergeometric([3/2,], [5/2, 3], -1/4*3^2)') > hypergeometric((3/2,), (5/2, 3), -1/4*3^2) > > You could use the python parser instead, via something like: > > SR(sage_eval(' hypergeometric((3/2,), (5/2, 3), -1/4*3^2)')) > > but note that SR will happily define symbols it doesn't know, whereas > sage_eval will complain: > > sage: SR("my_function(var1,var2)") > my_function(var1, var2) > sage: SR(sage_eval("my_function(var1,var2)")) > NameError: name 'my_function' is not defined > > > > On Tuesday, 25 April 2023 at 23:08:02 UTC-7 Nasser M. Abbasi wrote: > >> I read integrals from a file. They all are stored as strings. >> >> Then use SR('expression') inside sagemath to convert them to sagemath >> symbolic expression before calling integrate. >> >> Some give parsing error. >> >> Is using SR('expression') not the correct way to convert string to a >> symbolic expression? >> >> I am using 9.8 on Linux. Here is an example >> >> >sage >> │ SageMath version 9.8, Release Date: 2023-02-11 │ >> │ Using Python 3.11.1. Type "help()" for help. │ >> >> sage: hypergeometric((3/2,), (5/2, 3), -1/4*3^2) >> hypergeometric((3/2,), (5/2, 3), -9/4) >> >> You see, there is no error. But now if put the expression inside string >> and use SR, it gives error: >> >> >> sage: SR('hypergeometric((3/2,), (5/2, 3), -1/4*3^2)') >> >> --------------------------------------------------------------------------- >> SyntaxError Traceback (most recent call >> last) >> File ~/TMP/sage-9.8/src/sage/symbolic/expression.pyx:13706, in >> sage.symbolic.expression.new_Expression() >> 13705 from sage.calculus.calculus import >> symbolic_expression_from_string >> > 13706 return parent(symbolic_expression_from_string(x)) >> 13707 except SyntaxError as err: >> >> File ~/TMP/sage-9.8/src/sage/calculus/calculus.py:2578, in >> symbolic_expression_from_string(s, syms, accept_sequence, parser) >> 2576 parser._callable_constructor().set_names({k[0]: v for k, v in >> syms.items() >> 2577 if _is_function(v)}) >> -> 2578 return parse_func(s) >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:556, in >> sage.misc.parser.Parser.parse_expression() >> 555 >> --> 556 cpdef parse_expression(self, s): >> 557 """ >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:568, in >> sage.misc.parser.Parser.parse_expression() >> 567 cdef Tokenizer tokens = Tokenizer(s) >> --> 568 expr = self.p_expr(tokens) >> 569 if tokens.next() != EOS: >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:792, in >> sage.misc.parser.Parser.p_expr() >> 791 cdef int op >> --> 792 operand1 = self.p_term(tokens) >> 793 op = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:826, in >> sage.misc.parser.Parser.p_term() >> 825 cdef int op >> --> 826 operand1 = self.p_factor(tokens) >> 827 op = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:869, in >> sage.misc.parser.Parser.p_factor() >> 868 tokens.backtrack() >> --> 869 return self.p_power(tokens) >> 870 >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:897, in >> sage.misc.parser.Parser.p_power() >> 896 """ >> --> 897 operand1 = self.p_atom(tokens) >> 898 cdef int token = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:952, in >> sage.misc.parser.Parser.p_atom() >> 951 func = self.callable_constructor(name) >> --> 952 args, kwds = self.p_args(tokens) >> 953 token = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:989, in >> sage.misc.parser.Parser.p_args() >> 988 while token == c',': >> --> 989 arg = self.p_arg(tokens) >> 990 if isinstance(arg, tuple): >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:1039, in >> sage.misc.parser.Parser.p_arg() >> 1038 tokens.backtrack() >> -> 1039 return self.p_expr(tokens) >> 1040 >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:792, in >> sage.misc.parser.Parser.p_expr() >> 791 cdef int op >> --> 792 operand1 = self.p_term(tokens) >> 793 op = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:826, in >> sage.misc.parser.Parser.p_term() >> 825 cdef int op >> --> 826 operand1 = self.p_factor(tokens) >> 827 op = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:869, in >> sage.misc.parser.Parser.p_factor() >> 868 tokens.backtrack() >> --> 869 return self.p_power(tokens) >> 870 >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:897, in >> sage.misc.parser.Parser.p_power() >> 896 """ >> --> 897 operand1 = self.p_atom(tokens) >> 898 cdef int token = tokens.next() >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:964, in >> sage.misc.parser.Parser.p_atom() >> 963 if token != c')': >> --> 964 self.parse_error(tokens, "Mismatched parentheses") >> 965 return expr >> >> File ~/TMP/sage-9.8/src/sage/misc/parser.pyx:1042, in >> sage.misc.parser.Parser.parse_error() >> 1041 cdef parse_error(self, Tokenizer tokens, msg="Malformed >> expression"): >> -> 1042 raise SyntaxError(msg, tokens.s, tokens.pos) >> 1043 >> >> SyntaxError: Mismatched parentheses >> >> During handling of the above exception, another exception occurred: >> >> TypeError Traceback (most recent call >> last) >> Cell In [19], line 1 >> ----> 1 SR('hypergeometric((3/2,), (5/2, 3), -1/4*3^2)') >> >> File ~/TMP/sage-9.8/src/sage/structure/parent.pyx:896, in >> sage.structure.parent.Parent.__call__() >> 894 if mor is not None: >> 895 if no_extra_args: >> --> 896 return mor._call_(x) >> 897 else: >> 898 return mor._call_with_args(x, args, kwds) >> >> File ~/TMP/sage-9.8/src/sage/structure/coerce_maps.pyx:161, in >> sage.structure.coerce_maps.DefaultConvertMap_unique._call_() >> 159 print(type(C), C) >> 160 print(type(C._element_constructor), >> C._element_constructor) >> --> 161 raise >> 162 >> 163 cpdef Element _call_with_args(self, x, args=(), kwds={}): >> >> File ~/TMP/sage-9.8/src/sage/structure/coerce_maps.pyx:156, in >> sage.structure.coerce_maps.DefaultConvertMap_unique._call_() >> 154 cdef Parent C = self._codomain >> 155 try: >> --> 156 return C._element_constructor(x) >> 157 except Exception: >> 158 if print_warnings: >> >> File ~/TMP/sage-9.8/src/sage/symbolic/ring.pyx:384, in >> sage.symbolic.ring.SymbolicRing._element_constructor_() >> 382 TypeError: Malformed expression: λ + * !!! 1 >> 383 """ >> --> 384 return new_Expression(self, x) >> 385 >> 386 def _force_pyobject(self, x, bint force=False, bint >> recursive=True): >> >> File ~/TMP/sage-9.8/src/sage/symbolic/expression.pyx:13709, in >> sage.symbolic.expression.new_Expression() >> 13707 except SyntaxError as err: >> 13708 msg, s, pos = err.args >> > 13709 raise TypeError("%s: %s !!! %s" % (msg, s[:pos], s[pos:])) >> 13710 >> 13711 from sage.rings.infinity import (infinity, minus_infinity, >> >> TypeError: Mismatched parentheses: hypergeometric((3/2, !!! ), (5/2, 3), >> -1/4*3^2) >> sage: >> >> >> >> Is this a bug or Am I doing something wrong? This happens on very few >> cases, not all the time. The above is an example where SR gives an error. >> >> Thanks >> --Nasser >> >> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/4ebb6e32-56a7-442d-9ab1-073ed0cccebdn%40googlegroups.com.