LSR 010 - 虚数单位与复数规范¶
基本信息¶
LSR 编号 010
标题 虚数单位与复数规范
作者 Ziyang-Bai
状态 草案
类型 标准规范
创建日期 07-28-2026
归属项目 编译器、标准库、CAS
摘要¶
技术规范¶
1. 设计目标¶
明确
3 + 4I的语法含义避免虚数单位与普通变量或
sym声明冲突保持
Complex (C) ⊂ Expr的数值塔规则为 LMCAS 提供稳定的复数表达接口
2. 虚数单位¶
I 是预定义虚数单位,满足:
I^2 == -1
规则:
I是预定义常量,不是普通变量用户不得在同一作用域重新绑定
Isym I非法,必须报错ImaginaryUnitReserved小写
i是普通标识符,可以作为变量名或通过sym 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 [1] 和 LSR-007 [3]。
(I * I) === -1 # true,若当前等价 profile 支持复数基础规则
规则:
I^2 -> -1属于复数基础规则复数结构相等比较实部与虚部
Expr中复数等价判定仍受预算限制
7. 标准库要求¶
std.math 必须暴露;复数多结果场景按集合返回约定处理 [4]:
名称 |
类型 |
说明 |
|---|---|---|
|
|
虚数单位 |
|
|
构造复数 |
|
|
实部 |
|
|
虚部 |
|
|
共轭 |
|
|
模长 |
8. 错误模型¶
ImaginaryUnitReserved: 尝试绑定或声明IComplexLiteralSpacing: 虚数字面量后缀前存在非法空白ComplexTypeMismatch: 复数操作收到不兼容类型ComplexEvalUnboundSymbol:Expr降级为complex时存在未绑定符号