consistency API

Luna-Flow/linear-algebra/consistency 是一个仅用于测试的包。它没有公开项:其接口文件为空,存在的目的是在 immut、mutable 与 immut.MatrixFn 之间运行跨包一致性测试。

源码:src/consistency/core_wbtest.mbt。比较的内容及原因见 consistency 设计。

公开项

无。该包不应被导入。

测试套件

测试必须一致的内容
matrix core operations stay alignedimmut 与 mutable 的存储顺序、+、*、转置、迹
matrix constructors and conversions stay alignedmake、new、from_2d_array、from_array、to_2d_array、退化形状
matrix and vector conversions stay aligned由向量构造的行矩阵、列矩阵和对角矩阵
semantic differences stay explicit文档中说明的差异(原地更新与返回新值的更新)
shared same_index_swap stays alignedswap_rows(i, i) 和 swap_cols(i, i) 在两者中都不产生任何效果
identity and transpose laws stay alignedAI=AAI = A, IA=AIA = A, (AB)T=BTAT(AB)^{\mathsf T} = B^{\mathsf T} A^{\mathsf T}
trace and multiplication associativity stay alignedtr⁡(AT)=tr⁡(A)\operatorname{tr}(A^{\mathsf T}) = \operatorname{tr}(A), (AB)C=A(BC)(AB)C = A(BC)
vector tensor and matrix conversion laws stay aligned外积、行矩阵与列矩阵
cross-package matrix semiring laws on small integersquickcheck:+ 的结合律、分配律、乘积相等
zero-column multiplication stays aligned(2×0)(0×0)(2 \times 0)(0 \times 0) 乘积
immut and fn_matrix stay aligned on core lawsMatrix 与 MatrixFn 在 +、转置、行列式、pow 上的对比
all matrix implementations stay aligned under random small inputsquickcheck:三种实现在随机 2×22 \times 2 输入上的对比

运行方式:

moon test -p consistency