### 旧目标（已证明不可行）

- [x] 理论突破：找到通用的 `n*m` 分解理论。

### 新目标（可行且清晰的工程路径）

- [x] **理论选定：** 确定**双格理论 (Doublet Lattice)** 作为 `n>2` 或 `m>2` 时的核心近似框架。
- [x] **新模块 `omegaid/core/doublet_lattice.py`：**
  - [x] 实现 `generate_doublet_atoms(n, m)`
  - [x] 实现 `generate_doublet_mi_tasks(n, m)`
  - [x] 实现 `build_doublet_matrix(n, m)`
- [x] **重构核心计算函数 `calc_phiid_multivariate`：**
  - [x] 添加逻辑：当 `n=2` 且 `m=2` 时，调用现有精确解；否则，调用新的双格分解。
  - [x] 内部调用`doublet_lattice.py`中的新函数。
  - [x] 协调整个计算流程。
- [x] **扩展测试：**
  - [x] 新增 `test_2x2_equivalence.py`，确保重构后的函数在 `2x2` 场景下与原始实现结果在单/双精度容差范围内一致。
  - [x] 新增 `test_4x2_validity.py`，确保 `4x2` 分解的内部数值有效性。
  - [ ] 将性能基准测试扩展到 `4x2` 场景，评估其在GPU上的实际表现。

### **关键经验总结 (2025-06-30)**

1. **精度差异**: `phyid` (双精度) 与 `omegaid` (单精度) 的核心差异在于浮点数精度。数值完整性测试必须考虑这一点，适当放宽 `rtol` 是合理且必要的。
2. **内部有效**: 在进行跨库比较前，必须通过内部有效性测试（如 `test_4x2_validity.py`）确保分解逻辑自身的正确性。该测试的核心是验证 `A*x = b` 是否成立。
3. **数据对齐**: 在测试和实现中，必须确保所有参与计算的函数（无论是直接计算熵还是进行分解）都使用完全相同的数据输入，特别是经过时间延迟（`tau`）处理后的数据。
