This paper discovered the continuous math equivalent of the digital NAND gate. It turns out that a single binary operation paired with the constant 1 can generate every single standard elementary function. That operation is defined as eml(x,y)=exp(x)-ln(y). You can reconstruct constants like pi and the imaginary unit alongside basic addition and complex calculus tools using nothing but this one function.
The implications for machine learning and symbolic regression are massive. Normally when artificial intelligence tries to discover mathematical formulas from data it has to search through a chaotic space of different operators and syntax rules. Because the EML operator turns every mathematical expression into a uniform binary tree of identical nodes the search space becomes perfectly regular. You can basically treat a mathematical formula like a neural network circuit. The paper shows that when you train these EML trees using standard gradient optimizers like Adam the weights can actually snap to exact closed-form symbolic expressions instead of just giving fuzzy numerical approximations.
This finding could change how we design analog circuits and specialized computing hardware. If you only need a single instruction to execute any complex mathematical function you could build physical hardware or single instruction stack machines optimized purely for the EML operation. The fact that this was discovered by computationally stripping down a calculator rather than through purely theoretical derivation highlights how much structural beauty is still hiding in basic math.
I can kinda see how to get pi (and most of trig in general), the imaginary unit, and even some calculus, but (weirdly) basic arithmetic seems to be more difficult. I'll check out the paper, seems cool!
Not a complete answer, since they rely on the same basic arithmetic operators in question, but still neat.
Edit to add: Apparently this is multiplication…
Yep, the ln/exp immediately made me think about the multiplication/addition thing. I could also get 0 easily:
eml(1, eml(eml(1, 1), 1))(basicallye - ln(e^e)), and it's trivial to just get the exponential:exp(x) = eml(x, 1)What I didn't think about is that we could do some tricks with infinities :)
-∞ = eml(1, 0)neg_ln(x) = eml(-∞, x)neg(x) = neg_ln(exp(x))ln(x) = neg(neg_ln(x))x - y = eml(ln(x), exp(y))x + y = x - neg(y)That's so cool!
Yep, multiplication is easy when you have the above, it's basically
x × y = exp(ln(x) + ln(y))~~As far as I can tell just following through with substitutions leads to exactly the same expression as the one in the image~~
Actually their expression is different, I'm not sure exactly how they got to it...
i believe eml(1,0) is positive infinity.
Oh, you are correct!
In that case we just need one more step of
-∞ = eml(1, ∞). Let me fix the original comment