pub fn mul_csr_csr_with_workspace<N, A, B, I, Iptr>(
    lhs: CsMatViewI<'_, A, I, Iptr>,
    rhs: CsMatViewI<'_, B, I, Iptr>,
    seens: &mut [Box<[bool]>],
    tmps: &mut [Box<[N]>]
) -> CsMatI<N, I, Iptr>where
    N: MulAcc<A, B> + Zero + Clone + Send + Sync,
    A: Send + Sync,
    B: Send + Sync,
    I: SpIndex,
    Iptr: SpIndex,
Expand description

Compute a sparse matrix product using the SMMP routines, using temporary storage that was already allocated

seens and tmps are temporary storage vectors used to accumulate non zero locations and values. Their values need not be specified on input. They will be zero on output. They are slices of boxed slices, where the outer slice is there to give mutliple workspaces for multi-threading. Therefore, seens.len() controls the number of threads used for symbolic computation, and tmps.len() the number of threads for numeric computation.

Panics

  • if lhs.cols() != rhs.rows().
  • if seens.len() == 0
  • if tmps.len() == 0
  • if seens[i].len() != lhs.cols().max(lhs.rows()).max(rhs.cols())
  • if tmps[i].len() != lhs.cols().max(lhs.rows()).max(rhs.cols())