Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Make `general_mat_mul`/`general_mat_vec_mul` more discoverable

Aberta
#927 5 comentários 1 reação 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
30/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
rust
Domínio
data, documentation

Direção de pesquisa

Start with the linked general_mat_mul and general_mat_vec_mul documentation in the linalg module, then read the docs for the dot methods and Dot trait. Clarify whether the change should only improve documentation or also add the proposed GeneralDot trait and ArrayBase methods; done means the agreed functionality is discoverable and documented.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

The general_mat_mul and general_mat_vec_mul functions are not easy to find, since they're in the linalg module while most other functionality is available either at the top level of the crate or as methods on the array types.

At a minimum, we should mention them in the docs for the dot methods and Dot trait.

However, I think it would also be useful to expose the functionality as methods on ArrayBase. I'd suggest adding a trait like this:

/// General matrix multiplication.
pub trait GeneralDot<A, Rhs1, Rhs2> {
    /// Perform general matrix-matrix multiplication, modifying `self` in-place.
    ///
    /// Compute C ← α A B + β C, where `self` is C.
    ///
    /// The array shapes must agree in the way that if `a` is *M* × *N*, then
    /// `b` is *N* × *K* and `self` is *M* × *K*.
    ///
    /// ***Panics*** if array shapes are not compatible<br>
    /// *Note:* If enabled, uses blas `gemm` for elements of `f32, f64` when memory
    /// layout allows.  The default matrixmultiply backend is otherwise used for
    /// `f32, f64` for all memory layouts.
    fn mul_add_scaled_dot_inplace(
        &mut self,
        beta: A,
        alpha: A,
        a: &Rhs1,
        b: &Rhs2,
    );
}

and then add mul_add_scaled_dot_inplace methods which use this trait to ArrayBase<S, Ix1> and ArrayBase<S, Ix2>. What do you think?

Linguagem predominante
Rust
Estrelas
4.3k
Forks
391
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de rust-ndarray/ndarray

Todas as issues de rust-ndarray/ndarray

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.