LSR 010 - 虚数单位与复数规范¶
基本信息¶
LSR 编号 010
标题 虚数单位与复数规范
作者 Ziyang-Bai
状态 草案
类型 标准规范
创建日期 07-28-2026
归属项目 编译器、标准库、CAS
摘要¶
定义虚数单位 i、复数字面量、复数类型提升和 Expr 中复数的表示边界。
技术规范¶
1. 设计目标¶
明确
3 + 4i的语法含义避免虚数单位与普通变量或
sym声明冲突保持
Complex (C) ⊂ Expr的数值塔规则为 LMCAS 提供稳定的复数表达接口
2. 虚数单位¶
i 是预定义虚数单位,满足:
i^2 == -1
规则:
i是预定义常量,不是普通变量用户不得在同一作用域重新绑定
isym i非法,必须报错ImaginaryUnitReserved标准库可同时导出
std.math.i与std.math.I,二者表示同一虚数单位
3. 复数字面量¶
虚数字面量由数值字面量紧跟后缀 i 构成,中间不得有空白。
let a = 4i
let b = 3 + 4i
let c = -2.5i
let d = 1/2 + 3/4i
规则:
4i等价于4 * i3 + 4i等价于复数complex(3, 4)3 + 4 * i同样合法,但按普通乘法解析4 i非法,必须报错ComplexLiteralSpacing
4. 复数类型¶
complex 表示复数值,逻辑结构为实部与虚部:
complex = real_part + imaginary_part * i
规则:
实部和虚部均为数值类型
数值塔中
R ⊂ C实数与复数二元运算时,实数自动提升为复数
复数参与
Expr运算时整体提升为Expr
5. 与 Expr 的关系¶
当复数进入 Expr,它必须作为明确的复数表达式保留,不得拆成普通变量 i。
sym x
let z = x + 2i # Expr
规则:
i在Expr中仍表示虚数单位CAS 后端应提供虚数单位节点或复数节点
i不参与普通符号变量绑定Expr降级为complex必须显式求值,且表达式中不得有未绑定符号
6. 相等性¶
结构相等 == 与数学等价 === 分别遵循 LSR-000 和 LSR-007。
(i * i) === -1 # true,若当前等价 profile 支持复数基础规则
规则:
i^2 -> -1属于复数基础规则复数结构相等比较实部与虚部
Expr中复数等价判定仍受预算限制
7. 标准库要求¶
std.math 必须暴露:
名称 |
类型 |
说明 |
|---|---|---|
|
|
虚数单位 |
|
|
|
|
|
构造复数 |
|
|
实部 |
|
|
虚部 |
|
|
共轭 |
|
|
模长 |
8. 错误模型¶
ImaginaryUnitReserved: 尝试绑定或声明iComplexLiteralSpacing: 虚数字面量后缀前存在非法空白ComplexTypeMismatch: 复数操作收到不兼容类型ComplexEvalUnboundSymbol:Expr降级为complex时存在未绑定符号
9. 与其他 LSR 的关系¶
LSR-000:声明
complex类型、数值塔和3 + 4i示例LSR-004:
std.math应暴露复数相关常量与函数LSR-007:
Expr上复数等价判定由有限规则和预算约束LSR-009:复数结果可出现在
set<complex>或set<Expr>中