Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

InverseHInto returns incorrect results for row major arrays

未关闭
#285 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
rust
领域
data

调研方向

Reproduce the provided Rust example and inspect the invh_into entry point, especially its handling after the LAPACK routine and the triangular portion copied for row-major arrays. Done means the row-major example returns the expected matrix while the reversed-axes case continues to pass.

由索引模型根据 Issue 内容生成。

描述

bug

This example

use approx::assert_abs_diff_eq;
use ndarray::*;
use ndarray_linalg::*;

fn main() {
    let arr = array![[1., 3.], [3., 1.]];
    assert_abs_diff_eq!(
        arr.invh_into().unwrap(),
        array![[-0.125, 0.375], [0.375, -0.125]],
        epsilon = 1e-9,
    );
}

fails with the following message

thread 'main' panicked at 'assert_abs_diff_eq!(arr.invh_into().unwrap(), array![[- 0.125, 0.375], [0.375, - 0.125]], epsilon = 1e-9)

    left  = [[-0.125, 3.0],
 [3.0, -0.125]], shape=[2, 2], strides=[2, 1], layout=Cc (0x5), const ndim=2
    right = [[-0.125, 0.375],
 [0.375, -0.125]], shape=[2, 2], strides=[2, 1], layout=Cc (0x5), const ndim=2

It seems that invh_into is copying the incorrect triangular portion to overwrite the other triangular portion of the matrix after calling the LAPACK routine. This bug is layout-dependent. Changing arr in the example to array![[1., 3.], [3., 1.]].reversed_axes() causes the assertion to pass.

主要语言
Rust
星标
452
派生
95
PR 合并指标
30 天内没有已合并 PR

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

rust-ndarray/ndarray-linalg 的其他 Issue

查看 rust-ndarray/ndarray-linalg 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。