Le lun. 9 juin 2025, 06:45, Grégory Vanuxem <g.vanu...@gmail.com> a écrit :
> Hello Ralf, > > I have not seen this discussion, but I you have Mathamatica or a > WolframKernel jlFricas can easily do this using of course Julia and the > MathLink.jl package: > > In the Julia promp: > ] > add MathLink > > Your Mathematica installation will be used, see > https://github.com/JuliaInterop/MathLink.jl > > (1) -> aa:=jWSExpr aa;xx:=jWSExpr xx > > (1) xx > Type: > JLWSExpression > (2) -> expr:=sin(xx)^(aa+tan(xx^(-1))) > > (2) > > aa + tan(1/xx) > sin(xx) > Type: > JLWSExpression > (3) -> expr2:=sin(x)^(a+tan(x^(-1))) > > 1 > tan(-) + a > x > (3) sin(x) > Type: > Expression(Integer) > (4) -> toString jlApply("InputForm",expr) > > (4) "Sin[xx]^(aa + Tan[xx^(-1)])" > Type: > String > (5) -> toString(expr/7,"InputForm") > > (5) "Sin[xx]^(aa + Tan[xx^(-1)])/7" > Type: > String > (6) -> jWSExpr toString(expr/7,"InputForm") -- evaluate directly the > string in Mathematica > > (6) > > aa + tan(1/xx) > sin(xx) > --------------------- > 7 > Type: > JLWSExpression > (7) -> %^7 > > (7) > > 7 aa + 7 tan(1/xx) > sin(xx) > ------------------------- > 823543 > Type: > JLWSExpression > > Here, small support to return the EXPR(INT) version, but beware, this is > interpreted in a new environment the Waldek's function > 'interpret_in_new_env': > strToExprInt(s : String) : Union(Expression(Integer), "failed") == > str := concat("0$Expression(Integer)+", s) > af := parse(str)$InputForm > av := interpret_in_new_env(af)$InputForm > retractIfCan(av)$AnyFunctions1(Expression(Integer)) > > strToExprFloat(s : String) : Union(Expression(Float), "failed") == > str := concat("0$Expression(Float)+", s) > af := parse(str)$InputForm > av := interpret_in_new_env(af)$InputForm > retractIfCan(av)$AnyFunctions1(Expression(Float)) > > I use it only to do some comparisons. I do not use the returned value; > its behavior is undefined for me. > > (8) -> %::EXPR INT > > 1 > 7 tan(--) + 7 aa > xx > sin(xx) > (8) ----------------------- > 823543 > Type: > Expression(Integer) > > > But here, you have direct access to Mathematica inside FriCAS using > Wolfram Symbolic Transport Protocol. > So no need to start Mathematica if you want console-based Mathematica > work. Here is another example with jWSExpr, it should accept all console > compatible Mathematica expression: > > (10) -> integrate(1/(x^3 - 1), x) > > +-+ > +-+ 2 +-+ (2 x + 1)\|3 > - \|3 log(x + x + 1) + 2 \|3 log(x - 1) - 6 atan(-------------) > 3 > (10) ---------------------------------------------------------------- > +-+ > 6 \|3 > Type: Union(Expression > (Integer),...) > (11) -> jWSExpr "Integrate[1/(x^3 - 1), x]" > > (11) > > 1 + 2 x > atan(-------) 2 > sqrt(3) log(1 - x) log(1 + x + x ) > -(---------------) + ---------- - --------------- > sqrt(3) 3 6 > Type: > JLWSExpression > (12) -> factor % > > (12) > > 1 + 2 x 2 > -2 sqrt(3) atan(-------) + 2 log(1 - x) - log(1 + x + x ) > sqrt(3) > ----------------------------------------------------------- > 6 > Type: > JLWSExpression > (13) -> simplify(%%(11)) > > (13) > > 1 + 2 x 2 > -2 sqrt(3) atan(-------) + 2 log(1 - x) - log(1 + x + x ) > sqrt(3) > ----------------------------------------------------------- > 6 > Type: > JLWSExpression > > > > The jlFriCAS built with Clozure CL is relatively stable with this package. > With SBCL jlFriCAS can be unstable and falls in the debugger... > And falls sometimes in the debugger. Sorry. Greg Ps: maybe I can allocate memory in a different memory area. The architecture is already done. - Greg > > > Le ven. 14 mars 2025 à 00:14, 'Ralf Hemmecke' via FriCAS - computer > algebra system <fricas-devel@googlegroups.com> a écrit : > >> I sometimes want to compare FriCAS output with that what Mathematica >> returns and also wanted to be able to cut&paste FriCAS expressions to >> Mathematica without always having the need to change the syntax >> manually. I therefore modified Format1D in such a way that it shows >> Mathematica syntax. >> >> Of course, that cannot be perfect, because OutputForm is an output >> format and does not contain enough information. Nevertheless, the >> attached file produces Mathematica expressions for many common cases. >> >> Please try your favourite expression(s) and let me know where I should >> adapt something. >> >> Use as follows: >> >> )compile fmtmma.spad >> strmma x ==> >> first(lines(format(format(x::OutputForm)$Formatter(FormatMathematica)))) >> dispmma x ==> display(x::OutputForm::Formatter(FormatMathematica)) >> >> strmma(sin(x)^(a+tan(x^(-1)))) >> dispmma(sin(x)^(a+tan(x^(-1)))) >> dispmma(sum(sin(k*x),k=1..n)) >> >> =============================== >> %%% (33) -> strmma(sin(x)^(a+tan(x^(-1)))) >> >> (33) "Sin[x]^(Tan[1/x]+a)" >> Type: String >> %%% (34) -> dispmma(sin(x)^(a+tan(x^(-1)))) >> Sin[x]^(Tan[1/x]+a) >> Type: Void >> %%% (35) -> dispmma(sum(sin(k*x),k=1..n)) >> [OUTPUTFORM = k = 1, SEXPRESSION = (= k 1)] >> Sum[Sin[k*x], {k, 1, n}] >> Type: Void >> >> Ralf >> >> -- >> You received this message because you are subscribed to the Google Groups >> "FriCAS - computer algebra system" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to fricas-devel+unsubscr...@googlegroups.com. >> To view this discussion visit >> https://groups.google.com/d/msgid/fricas-devel/81040453-ba21-463d-aa48-7b871ee676ef%40hemmecke.org >> . >> > -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/fricas-devel/CAHnU2da%2B9KShO27O%3DPGjYqxfzw7yxP0CCQtzXsLj2WA9Z4odiA%40mail.gmail.com.