#include <alpaqa/config/config.hpp>
#include <alpaqa/util/demangled-typename.hpp>
#include <alpaqa/util/enumerate.hpp>
#include <alpaqa/util/iter-adapter.hpp>
#include <alpaqa/util/set-intersection.hpp>
#include <algorithm>
#include <cassert>
#include <chrono>
#include <iostream>
#include <numeric>
#include <ranges>
#include <span>
#include <Eigen/Sparse>
 
Go to the source code of this file.
 | 
| template<class SpMat , class MaskVec >  | 
| auto  | select_rows_in_col (const SpMat &sp_mat, MaskVec &mask, auto column) | 
|   | Returns a range over the row indices in the given column of sp_mat that are also in mask.  
  | 
|   | 
| template<class SpMat , class MaskVec >  | 
| auto  | select_rows_in_col_iota (const SpMat &sp_mat, MaskVec &mask, auto column) | 
|   | Like select_rows_in_col, but returns a range of tuples containing the Eigen InnerIterator and a linear index into the mask.  
  | 
|   | 
| template<class SpMat , class Mat , class MaskVec >  | 
| void  | sparse_add_masked (const SpMat &R_full, Mat &&R, const MaskVec &mask) | 
|   | R += R_full(mask,mask)  
  | 
|   | 
| template<class SpMat , class Mat , class MaskVec >  | 
| void  | sparse_add_masked_rows (const SpMat &S_full, Mat &&S, const MaskVec &mask) | 
|   | S += S_full(mask,:)  
  | 
|   | 
| template<class SpMat , class CVec , class Vec , class MaskVec >  | 
| void  | sparse_matvec_add_masked_rows_cols (const SpMat &R, const CVec &v, Vec &&out, const MaskVec &mask_J, const MaskVec &mask_K) | 
|   | out += R(mask_J,mask_K) * v(mask_K);  
  | 
|   | 
| template<class SpMat , class CVec , class Vec , class MaskVec >  | 
| void  | sparse_matvec_add_transpose_masked_rows (const SpMat &S, const CVec &v, Vec &&out, const MaskVec &mask) | 
|   | out += S(mask,:)ᵀ * v(mask);  
  | 
|   |