Re: [EXTERNAL] Re: 1-button calculator ~ "all elementary fns from a single operator"
Richard Fateman <[email protected]> Sun, 3 May 2026 13:08:35 -0400
| Newsgroups | gmane.comp.mathematics.maxima.general |
|---|---|
| Message-ID | <CADB8Zm4j4F0Ed7i2kMbbp8LvV7WC+qZcUokbqFVHEdq-cEwzag@mail.gmail.com> |
This is still a silly thing to do, but if you want to replace all additions with additions of 2 items, then consider this.. bplus([r]):= if length(r)>2 then bplus(first(r),apply(bplus,rest(r))) else 'bplus(first(r),second(r)); subst(bplus,?mplus, your_expression); or some such.. I tried this and had to do ev(%), but other hacks should work. On Sun, May 3, 2026 at 12:33 PM Henry Baker <[email protected]> wrote: > OK, I looked at the Python3 code for the EML compiler, and it looks like > it would be trivial to translate its formulae into Maxima using pattern > matching. > > For example, here are some of the Python3 functions: > > def EML(a, b): return f"EML[{a},{b}]" > def eml_exp(z): return EML(z, "1") # Exp[z] > def eml_log(z): return EML("1", eml_exp(EML("1", z))) # Log[z] > def eml_zero(): return eml_log("1") # 0 = Log[1] > def eml_sub(a, b): return EML(eml_log(a), eml_exp(b)) # a - b > def eml_neg(z): return eml_sub(eml_zero(), z) # -z > def eml_add(a, b): return eml_sub(a, eml_neg(b)) # a + b > def eml_inv(z): return eml_exp(eml_neg(eml_log(z))) # 1/z > def eml_mul(a, b): return eml_exp(eml_add(eml_log(a), eml_log(b))) # a*b > def eml_div(a, b): return eml_mul(a, eml_inv(b)) # a/b > def eml_pow(a, b): return eml_exp(eml_mul(b, eml_log(a))) # a^b > def eml_one(): return "1" > def eml_two(): return eml_add("1", "1") > def eml_double(z): return eml_add(z, z) > > Thus, in Maxima > matchdeclare(z,all); > tellsimp(exp(z),EML(z,1)); > tellsimp(log(z),EML(1,exp(EML(1,z)))); > > However, such a pattern-matching compiler would have a bigger problem with > sums and products, and an even bigger problem with converting constants -- > e.g., integers, rationals, floats. > > The good news: EML compiling and simplification provide a pretty decent > workout for Maxima, and would likely make some pretty good test cases > and/or benchmarks. > > -----Original Message----- > From: Henry Baker <[email protected]> > Sent: May 2, 2026 8:53 AM > To: Przemek Klosowski via Maxima-discuss < > [email protected]> > Subject: Re: [Maxima-discuss] [EXTERNAL] Re: 1-button calculator ~ "all > elementary fns from a single operator" > > OK, I downloaded the "EML compiler" from here: > > https://github.com/VA00/SymbolicRegressionPackage/tree/master > > The EML compiler requires python3 & numpy (and probably other stuff > that I might already have installed). > > I then did a trivial script to convert from Mathematica expressions to > Maxima expressions. > > EML requires that log(0)=minf, so I defined mylog(x):=if (x=0) then minf > else log(x), and used mylog(x) instead of log(x) in the definition of eml. > > However, I now require that %e^minf = 0. > > What is the magic in Maxima to make this happen? I did "? minf", but that > didn't provide any help. > > -----Original Message----- > From: Henry Baker > Sent: May 1, 2026 11:23 AM > To: Przemek Klosowski via Maxima-discuss > Subject: Re: [Maxima-discuss] [EXTERNAL] Re: 1-button calculator ~ "all > elementary fns from a single operator" > > Obviously, Google was confused. > > Q: If z = exp(x)-log(y), then x = log(z + log(y)) might look a tad better > ? Is this log(z+log(y)) function universal in the same sense as eml() ? > > Q: if we have a 1BC expression for f(x)=y, can we then trivially compute > x=f^-1(y) ? > > Q: The 1BC paper seems to want to rely on functions defined over the > reals; I suspect that functions defined over the complex numbers might give > additional 1BC results that might be prettier ? Perhaps the constant %pi*%i > might work to force things into the complex plane ? > > Q: I've always had a fondness for asinh(x), as it is bijective onto the > reals, and has many of the same properties/characteristics as "gradual > underflow" floating point numbers. I'm wondering if it could be part of a > universal 1BC function ? > > -----Original Message----- > From: Przemek Klosowski via Maxima-discuss > Sent: May 1, 2026 9:24 AM > To: > Subject: Re: [Maxima-discuss] [EXTERNAL] Re: 1-button calculator ~ "all > elementary fns from a single operator" > > > BTW, Google just told me that the obvious differential equation for > > eml(x,y) is > > > > dy/dx = y*exp(x) > > (%i1) eq:'diff(y,x)=y*exp(x); > dy x > (%o1) ── = %e y > dx > (%i2) ode2(eq,y,x); > x > %e > (%o2) y = %e %c > > what am I missing? > > > > _______________________________________________ > Maxima-discuss mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > > > _______________________________________________ > Maxima-discuss mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > > > _______________________________________________ > Maxima-discuss mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > > > _______________________________________________ > Maxima-discuss mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > _______________________________________________ Maxima-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/maxima-discuss