扩展库 / linalg
linalg
二维、三维向量与 2×2 矩阵的轻量计算。
复用 XRT 的稳定长度计算;多返回值适配 XLang,C 提供输出参数。夹角以缩放后的叉积和点积计算,保留微小角度;有限插值端点精确返回,求逆在极端范围拆分指数,避免中间商溢出或次正规舍入。近奇异拒绝阈值不变。2026-10-29 冻结 Windows/Linux x64 发布物的包级门禁均通过;旧 AOT 缺符号阻断已解除。
API
| 函数 | 用途 |
|---|---|
dot2/dot3, mag2/mag3 | 点积、长度 |
normalize2, cross3, angle2 | 归一化、叉积、弧度夹角 |
det2, inverse2, multiply2 | 2×2 行序矩阵 |
dist2/dist3, lerp | 距离与插值 |
xlang
import linalg
float x = 0.0
float y = 0.0
x, y = linalg.normalize2(3.0, 4.0)
C
包含 include/linalg_native.h。组合结果使用 _into 输出参数;各输出指针必须非空且互异,失败返回 0,不覆盖原输出。C 不做组合结果装箱;XLang 现行多返回桥仍分配结果数组与浮点值,不称零开销。完整参数及数值边界见包内 README。
双语校准范例
包内 examples/calibration.xl 与 examples/calibration_c.c 用相同输入完成插值端点、极端量级求逆和双通道测量校准;均可直接 xl run,核对同一三行黄金输出。有限端点保留有符号零;NaN/无穷仍按原算术传播,不承诺任意外推有限或通用条件数评估。
Windows 包级门禁 release/extlibs/linalg/test/check.ps1 与 Linux test/check.sh 核对全部十三项实际生成原型、C/XLang 边界、分配失败、177 项新增数值检查、两组双语固定输出及十条独立程序;Linux 另有 C ASan/UBSan。在 Python 可用时,用标准库有理数独立对照 2161 个矩阵,两平台均为零失败;无 Python 明确标记跳过。输入指纹、超时与失败现场均可追溯,-SkipAot 仅作 Windows 聚焦检查。包级签收不代表全产品回归或其他架构的发布准入。