本文翻译自 All elementary functions from a single binary operator,原载于 Hacker News。
一个运算符统治一切
在数字电路的世界里,有一个广为人知的事实:NAND 门(Sheffer stroke)单独一个两输入逻辑门,就足以构建任意的布尔逻辑电路。所有复杂的逻辑运算——AND、OR、NOT、XOR——都可以从这一种门电路推导出来。
但在连续数学领域,从来没有人找到过类似的原语。计算 sin、cos、sqrt、log 这些初等函数,似乎天然需要多种不同的运算。我们的科学计算器上有几十个按钮,每个按钮对应一种不同的函数。
直到现在。
波兰雅盖隆大学理论物理研究所的 Andrzej Odrzywołek 在 2026 年 3 月发表的一篇论文中证明:仅凭一个二元运算符和常数 1,就能重构科学计算器的全部功能。
这个运算符叫做 EML(Exp-Minus-Log):
eml(x, y) = exp(x) - ln(y)
为什么这令人震惊?
让我列举一下 EML 能做什么——仅使用它本身和常数 1:
生成基本常数:
- 自然常数
e = eml(1, 1),因为exp(1) - ln(1) = e - 0 = e - 虚数单位
i和圆周率π通过复数域计算获得
重构算术运算:
- 指数函数:
e^x = eml(x, 1) - 自然对数:
ln(x) = eml(1, eml(eml(1, x), 1)) - 加法、减法、乘法、除法——全部可以从 EML 的嵌套组合中推导出来
重构所有超越函数:
- 三角函数 sin、cos、tan
- 双曲函数 sinh、cosh、tanh
- 反三角函数和反双曲函数
- 开方运算
用作者的话说:一个只有两个按钮的计算器(1 和 EML),功能等同于完整的科学计算器。
发现过程:从 36 个按钮到 2 个
Odrzywołek 采用了一种系统性的”消融实验”(ablation testing)方法。他从科学计算器的 36 个原语(常数、一元函数、二元运算)开始,逐步移除元素,验证剩余集合是否仍然完备。
这个过程产生了逐步简化的计算器配置:
| 配置 | 所需原语 | 备注 |
|---|---|---|
| Wolfram 语言 | exp, ln, +, i | 几乎 40 年的工业级优化 |
| Calc 3 | exp, ln, +, minus, inv, suc | 首次超越 Wolfram |
| Calc 2 | exp, ln, - | 非交换运算提供关键能力 |
| Calc 1 | pow, log | 自顶向下,用超运算替代 |
| Calc 0 (EML) | eml + 1 | 最终极简 |
搜索过程中最困难的部分在于:很多公式看起来完全不像人类能”直觉构造”的东西。作者举了一个经典例子——仅用 suc(x) = x+1、pre(x) = x-1、inv(x) = 1/x 三个运算来计算取负 -x:
suc(inv(pre(inv(suc(inv(x)))))) = -x
嵌套深度达到 5-9 层,根本没有规律可循,只能靠暴力搜索。
EML 的语法之美
EML 最优雅的地方在于其语法结构。每个初等函数都可以表示为一棵完全相同的节点组成的二叉树,对应的上下文无关文法极其简单:
S → 1 | eml(S, S)
这意味着所有初等函数表达式都变成了由同一种节点构成的二叉树——就像数字电路中所有逻辑都由同一种 NAND 门构建一样。
一些简单的例子:
自然对数: eml(1, eml(eml(1, x), 1))
恒等函数: 深度为 4 的 EML 树
取负: 更复杂的 EML 树
倒数: inv(x) = 1/x 的 EML 表达式
应用前景:符号回归的新范式
这个发现不仅仅是个数学玩具。它为符号回归(Symbolic Regression)开辟了全新的方向。
梯度优化的符号回归
传统的符号回归方法(如 PySR、AI Feynman)需要在包含多种不同运算符的异构语法空间中搜索。EML 的存在使得我们可以构建一个“万能公式”(master formula)——一棵参数化的 EML 二叉树,通过调整参数可以表示任意初等函数。
具体来说,EML 树的每个输入可以是常数 1、输入变量 x 或前一层的输出。用线性组合 α + βx + γf 来参数化每个输入,其中参数被当作 logits,通过 softmax 归一化。
作者使用标准的 Adam 优化器在 PyTorch 上进行了实验,结果令人振奋:
| 树深度 | 随机初始化恢复成功率 |
|---|---|
| 2 | 100% |
| 3-4 | ~25% |
| 5 | <1% |
| 6 | 0%(448 次尝试) |
但当从正确答案附近(加高斯噪声扰动)开始优化时,即使深度 5-6 也能 100% 收敛到精确公式。这说明 EML 表示是有效的,正确的吸引盆确实存在——只是从随机初始化找到它们越来越难。
成功恢复时,均方误差在 10^-32 量级(机器精度的平方),与精确符号恢复一致。
EML 编译器
作者还提供了一个 Python 实现的 EML 编译器,可以将任意公式转换为纯 EML 形式。转换后的表达式可以在任何 IEEE 754 兼容的语言中执行,甚至可以在 FPGA 或模拟电路上实现。
技术细节:为什么需要复数?
EML 在实数轴上工作,但内部计算必须在复数域进行。这是因为生成 i 和 π 需要计算 ln(-1)。类似量子计算用复数振幅计算实数概率,EML 用复数中间量计算实数初等函数。
作者搜索了纯实数的替代方案(比如用三角函数/双曲函数及其逆函数代替 exp/ln 对),但一无所获。纯实数域的连续 Sheffer 算子似乎不存在。
EML 的”表亲”
EML 并不是唯一的通用算子。作者发现了几个”表亲”:
- EML:
eml(x,y) = exp(x) - ln(y),配合常数 1 - EDL:
edl(x,y) = exp(x) / ln(y),配合常数 e - -EML:
-eml(y,x) = ln(x) - exp(y),配合常数 -∞
甚至还有一个三元变体 T(x,y,z) = e^x/ln(x) × ln(z)/e^y,满足 T(x,x,x) = 1,不需要任何特定常数。
对中国开发者的启示
作为开发者,这个发现有几个值得思考的点:
-
简洁性的力量:NAND 门之于数字电路,EML 之于初等函数——单一原语的普适性一再出现在不同领域。在设计系统架构时,我们是否也过度依赖了”多种按钮”?
-
符号回归的统一搜索空间:对于做 AI for Science 的团队来说,EML 提供了一个天然的、完备的公式搜索空间。不需要再担心选择的运算符集合是否完备。
-
可解释性:EML 树的权重可以”咬合”到精确的 0/1 值,恢复出封闭形式的公式——这是传统神经网络做不到的。当模型发现数据背后的精确规律时,结果是人类可读的。
-
硬件潜力:纯 EML 形式可以在 FPGA 或模拟电路上高效实现,只需要一种类型的运算单元。
核心要点
- EML 算子
eml(x,y) = exp(x) - ln(y)是连续数学的 “NAND 门”——仅此一个运算符(加上常数 1)就能生成全部初等函数 - 所有初等函数都可以表示为同一种节点组成的二叉树,语法极为简洁:
S → 1 | eml(S, S) - 这为符号回归提供了统一的、完备的搜索空间,可以用标准梯度优化器(Adam)从数据中发现精确的封闭形式公式
- 深度 2 时恢复成功率 100%,深度 3-4 时约 25%,改进收敛方法后有望大幅提升
- 内部需要复数运算,但这是不可避免的——就像量子计算一样
代码和复现材料可在 GitHub 获取。