Or having a double representation when calling a symbolic function, one for FriCAS and another for Wolfram. I have no idea right now but since it's just an interface the code is very simple:
asech(x) == junfunc("W_"ArcSech_"",x) acsch(x) == junfunc("W_"ArcCsch_"",x) acoth(x) == junfunc("W_"ArcCoth_"",x) erf(x) == junfunc("W_"Erf_"",x) erfc(x) == junfunc("W_"Erfc_"",x) erf(x, y) == jbinfunc("W_"Erf_"",x, y) erfi(x) == junfunc("W_"Erfi_"",x) Si(x) == junfunc("W_"SinIntegral_"",x) Shi(x) == junfunc("W_"SinhIntegral_"",x) Ci(x) == junfunc("W_"CosIntegral_"",x) Chi(x) == junfunc("W_"CoshIntegral_"",x) Ei(x) == junfunc("W_"ExpIntegralEi_"",x) fresnelC(x) == junfunc("W_"FresnelC_"",x) fresnelS(x) == junfunc("W_"FresnelS_"",x) riemannZeta(x) == junfunc("W_"Zeta_"",x) lambertW(x) == junfunc("W_"ProductLog_"",x) lambertW(x,y) == jbinfunc("W_"ProductLog_"",x, y) polygamma(x,y) == jbinfunc("W_"PolyGamma_"",x, y) toString(x) == jbinfunc("W_"ToString_"", x, jWSExpr("InputForm")) toString(x, form) == jbinfunc("W_"ToString_"", x, form) simplify(expr) == junfunc("W_"Simplify_"", expr) simplify(expr, assume) == jbinfunc("W_"Simplify_"", expr, assume) extendedSimplify(expr) == junfunc("W_"FullSimplify_"", expr) extendedSimplify(expr, assume) == jbinfunc("W_"FullSimplify_"", expr, assume) piecewiseExpand(expr) == junfunc("W_"PiecewiseExpand_"", expr) piecewiseExpand(expr, assume) == jbinfunc("W_"PiecewiseExpand_"", expr, assume) After, this is just practical things to handle. Le ven. 31 mai 2024 à 00:55, Grégory Vanuxem <g.vanu...@gmail.com> a écrit : > Thanks Waldek, > > My principal problem would be to have a hook in the TeX formatter I think, > I already have the LaTeX string, it comes from the WolframEngine and I > can't know in advance which function it will return. I have no problem to > coerce to OutputForm rationals, integers etc. For numbers it is not a > problem, but I am also writing a parallel Expression domain, an interface > in fact, where for example LambertW is PolyLog. > > An example: > > (1) -> x:=jWSExpr("x") > > (1) x > Type: > JuliaWSExpression > Time: 0.04 (IN) + 0.40 (EV) + 0.26 (OT) = 0.70 > sec > (2) -> y:=jWSExpr("y") > > (2) y > Type: > JuliaWSExpression > Time: 0.05 (OT) = 0.06 > sec > (3) -> trigToExp(sin(x) * sinh(y)+sqrt(y)) > > (3) (I/4)*(E^((-I)*x) - E^(I*x))*(-E^(-y) + E^y) + sqrt(y) > Type: > JuliaWSExpression > Time: 0.04 (EV) + 0.06 (OT) = 0.10 > sec > (4) -> sin(x) * sinh(y)+sqrt(y) > > (4) sqrt(y) + sin(x)*sinh(y) > Type: > JuliaWSExpression > Time: 0.05 (OT) = 0.06 > sec > (5) -> jlPlot(x+->sinc(x), -5..5) > -- lot of time the first time > Type: > Void > Time: 0.04 (IN) + 1.08 (EV) + 0.09 (OT) = 1.20 > sec > > (6) -> jlPlotTitle! jlLatex latex %%(3) > Type: > Void > Time: 0.02 (IN) + 0.33 (EV) = 0.36 > sec > > (7) -> latex %%(3) > > (7) > "\sqrt{y}+\frac{1}{4} i \left(e^{-i x}-e^{i x}\right) > \left(e^y-e^{-y}\right) > " > Type: > String > Time: 0 > sec > > This is not the good title, it is just for illustration. For graph that's > easily possible to use the LaTeX string in my settings, but having it used > internally ')with set output tex on", I am stuck. Unless I dig into FriCAS > internals? Probably. Nevertheless I can use it with graph, it's just > saveFig("test.png") for this mail after it was displayed on a Window: > > [image: test.png] > > I looked at precondition but in this context my OutputForm is already a > formatted String, it can represent too many things in comparison with > FriCAS Expression domain. That's illusory and Wolfram™ has already done the > job to translate to LaTeX .It's common apparently with mathematical > software. > > I am still continuing to better understand the OutputForm and its link to > other formatters. For example, part of MathML output seems coded sometimes > in domains themselves. > > - Greg > > PS: the FriCAS output in this mail is regex substituted before > (downcase and brackets to parens substitutions), normally my output in > FriCAS has the Wolfram language form: Sin[Cos[x]] > > > > Le jeu. 30 mai 2024 à 17:14, Waldek Hebisch <de...@fricas.org> a écrit : > >> On Thu, May 30, 2024 at 02:57:20PM +0200, Grégory Vanuxem wrote: >> > >> > time allows, my thoughts are vague and scattered. But think about >> sqrt(x) >> > or asin(x) in LaTeX, they may be formatted differently if you use \sqrt, >> > \asin or sin^1 (x), x^(1/2), negative power for rational numbers, etc. >> The >> > way OutputForm works doesn't allow a domain's coder to choose which >> > representation to display. >> >> OutputForm can represent each variant and domain's coder can use what >> is more appropriate, like: >> >> (2) -> y*(x::OutputForm)^(-1) >> >> - 1 >> (2) y x >> Type: >> OutputForm >> >> > >> > How to handle for example \asin or \sin ^{-1}(a) in LatTeX. >> >> Just produce right OutputForm: >> >> (4) -> )set output tex on >> (4) -> prefix((sin::OutputForm)^(-1), [a]) >> >> - 1 >> (4) sin (a) >> $$ >> {{\sin} \sp {-1}} >> \left( >> {a} >> \right) >> \leqno(4) >> $$ >> >> Type: >> OutputForm >> >> Both your wishes could be done by relatively simple transformation >> of OutputForm. Currently before formattiong OutputForm is transformed >> by 'precondition' in OutputFormTools. In principle 'precondition' >> could be replaced by a user function. >> >> -- >> Waldek Hebisch >> >> -- >> 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 on the web visit >> https://groups.google.com/d/msgid/fricas-devel/ZliX7cwIwPxmB7cN%40fricas.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 on the web visit https://groups.google.com/d/msgid/fricas-devel/CAHnU2dZLLqwh%2BdpZdKtiwUjNZ2C_y8m%2BfGbUMpOa3Ah%2BhB-m0A%40mail.gmail.com.