NEE's Blog

一个二元运算符生成全部初等函数:EML 算子的发现

April 13, 2026

本文翻译自 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,不需要任何特定常数。

对中国开发者的启示

作为开发者,这个发现有几个值得思考的点:

  1. 简洁性的力量:NAND 门之于数字电路,EML 之于初等函数——单一原语的普适性一再出现在不同领域。在设计系统架构时,我们是否也过度依赖了”多种按钮”?

  2. 符号回归的统一搜索空间:对于做 AI for Science 的团队来说,EML 提供了一个天然的、完备的公式搜索空间。不需要再担心选择的运算符集合是否完备。

  3. 可解释性:EML 树的权重可以”咬合”到精确的 0/1 值,恢复出封闭形式的公式——这是传统神经网络做不到的。当模型发现数据背后的精确规律时,结果是人类可读的。

  4. 硬件潜力:纯 EML 形式可以在 FPGA 或模拟电路上高效实现,只需要一种类型的运算单元。

核心要点

  • EML 算子 eml(x,y) = exp(x) - ln(y) 是连续数学的 “NAND 门”——仅此一个运算符(加上常数 1)就能生成全部初等函数
  • 所有初等函数都可以表示为同一种节点组成的二叉树,语法极为简洁:S → 1 | eml(S, S)
  • 这为符号回归提供了统一的、完备的搜索空间,可以用标准梯度优化器(Adam)从数据中发现精确的封闭形式公式
  • 深度 2 时恢复成功率 100%,深度 3-4 时约 25%,改进收敛方法后有望大幅提升
  • 内部需要复数运算,但这是不可避免的——就像量子计算一样

代码和复现材料可在 GitHub 获取。

comments powered by Disqus