.TH "RsbMatrix< NT >" 3 "Version 1.3.0.2" "librsb" \" -*- nroff -*- .ad l .nh .SH NAME RsbMatrix \- Represent a sparse matrix in RSB format by means of \fClibrsb\fP\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .SS "Public Types" .in +1c .ti -1c .RI "enum \fBRsbSym\fP { \fBIsGen\fP = RSB_FLAG_NOFLAGS, \fBIsHer\fP = RSB_FLAG_HERMITIAN, \fBIsSym\fP = RSB_FLAG_SYMMETRIC, \fBIsTri\fP = RSB_FLAG_TRIANGULAR }" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBRsbMatrix\fP (\fBrsb_coo_idx_t\fP \fBnrA\fP, \fBrsb_coo_idx_t\fP \fBncA\fP, \fBconst\fP \fBRsbSym\fP \fBsym\fP=\fBIsGen\fP)" .br .ti -1c .RI "\fBRsbMatrix\fP (\fBrsb_coo_idx_t\fP \fBnrA\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBRP\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBconst\fP NT *\fBVA\fP, \fBconst\fP \fBRsbSym\fP \fBsym\fP=\fBIsGen\fP)" .br .ti -1c .RI "\fBRsbMatrix\fP (\fBconst\fP \fBrsb_coo_idx_t\fP *\fBIA\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBconst\fP NT *\fBVA\fP, \fBrsb_nnz_idx_t\fP \fBnnzA\fP, \fBconst\fP \fBrsb_flags_t\fP \fBflagsA\fP=\fBRSB_FLAG_NOFLAGS\fP)" .br .ti -1c .RI "\fBRsbMatrix\fP (\fBconst\fP \fBrsb_char_t\fP *\fBfilename\fP, \fBconst\fP \fBRsbSym\fP \fBsym\fP=\fBIsGen\fP)" .br .ti -1c .RI "\fBRsbMatrix\fP (\fBconst\fP \fBRsbMatrix\fP &\fBA_Rsb\fP, \fBbool\fP \fBdo_trans\fP=\fBfalse\fP, \fBrsb_flags_t\fP \fBflagsA\fP=\fBRSB_FLAG_NOFLAGS\fP)" .br .ti -1c .RI "\fBRsbMatrix\fP (\fBRsbMatrix\fP &&\fBother\fP)" .br .ti -1c .RI "\fB~RsbMatrix\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fB_add\fP (\fBrsb_coo_idx_t\fP \fBi\fP, \fBrsb_coo_idx_t\fP \fBj\fP, NT \fBval\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBclose\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fB_close\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBspmv\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT *\fBalphap\fP, \fBconst\fP NT *\fBXp\fP, \fBrsb_coo_idx_t\fP \fBincX\fP, \fBconst\fP NT *\fBbetap\fP, NT *\fBYp\fP, \fBrsb_coo_idx_t\fP \fBincY\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspmv\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT \fBalpha\fP, \fBconst\fP NT *\fBXp\fP, \fBrsb_coo_idx_t\fP \fBincX\fP, \fBconst\fP NT \fBbeta\fP, NT *\fBYp\fP, \fBrsb_coo_idx_t\fP \fBincY\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspmv\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT \fBalpha\fP, \fBconst\fP NT *\fBXp\fP, \fBconst\fP NT \fBbeta\fP, NT *\fBYp\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspmv\fP (NT *\fBy\fP, \fBconst\fP NT *\fBx\fP, \fBbool\fP \fBdo_trans\fP=\fBfalse\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBspmm\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT *\fBalphap\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, \fBconst\fP NT *\fBbetap\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspmm\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT \fBalpha\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, \fBconst\fP NT \fBbeta\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspmm\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT \fBalpha\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBconst\fP NT \fBbeta\fP, NT *\fBCp\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBspsm\fP (\fBrsb_trans_t\fP \fBtransT\fP, \fBconst\fP NT *\fBalphap\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBbetap\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsm\fP (\fBrsb_trans_t\fP \fBtransT\fP, \fBconst\fP NT \fBalpha\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT \fBbeta\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsm\fP (\fBrsb_trans_t\fP \fBtransT\fP, \fBconst\fP NT \fBalpha\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBconst\fP NT *\fBBp\fP, NT *\fBCp\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsm\fP (NT *\fBy\fP, \fBconst\fP NT *\fBx\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBbool\fP \fBdo_trans\fP=\fBfalse\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsm\fP (NT *\fBy\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBbool\fP \fBdo_trans\fP=\fBfalse\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBspsv\fP (\fBrsb_trans_t\fP \fBtransT\fP, \fBconst\fP NT *\fBalphap\fP, \fBconst\fP NT *\fBXp\fP, \fBrsb_coo_idx_t\fP \fBincX\fP, NT *\fBYp\fP, \fBrsb_coo_idx_t\fP \fBincY\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsv\fP (\fBrsb_trans_t\fP \fBtransT\fP, \fBconst\fP NT \fBalpha\fP, \fBconst\fP NT *\fBXp\fP, NT *\fBYp\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsv\fP (NT *\fBy\fP, \fBconst\fP NT *\fBx\fP, \fBbool\fP \fBdo_trans\fP=\fBfalse\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBspsv\fP (NT *\fBy\fP, \fBbool\fP \fBdo_trans\fP=\fBfalse\fP) \fBconst\fP" .br .ti -1c .RI "\fBsize_t\fP \fBget_info_size_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_flags_t\fP \fBget_info_rsb_flags_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_blk_idx_t\fP \fBget_info_blk_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_nnz_idx_t\fP \fBget_info_nnz_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_flags_t\fP \fBget_flags_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_type_t\fP \fBget_type_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_coo_idx_t\fP \fBget_info_coo_t\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmif\fP) \fBconst\fP" .br .ti -1c .RI "\fBsize_t\fP \fB_get_index_storage_bytes\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBsize_t\fP \fB_get_storage_bytes\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_nnz_idx_t\fP \fBnnz\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_blk_idx_t\fP \fBblocks\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_coo_idx_t\fP \fBrows\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_coo_idx_t\fP \fBcols\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBget_vals\fP (NT *\fBVA\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBIA\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBrsb_nnz_idx_t\fP \fBnnz\fP, \fBrsb_flags_t\fP \fBflags\fP) \fBconst\fP" .br .ti -1c .RI "NT \fBget_val\fP (\fBconst\fP \fBrsb_coo_idx_t\fP \fBi\fP, \fBconst\fP \fBrsb_coo_idx_t\fP \fBj\fP, \fBrsb_flags_t\fP \fBflags\fP=\fBRSB_FLAG_NOFLAGS\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBset_val\fP (\fBconst\fP NT \fBval\fP, \fBconst\fP \fBrsb_coo_idx_t\fP \fBi\fP, \fBconst\fP \fBrsb_coo_idx_t\fP \fBj\fP, \fBrsb_flags_t\fP \fBflags\fP=\fBRSB_FLAG_NOFLAGS\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBset_vals\fP (\fBconst\fP NT *\fBVA\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBIA\fP, \fBconst\fP \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBrsb_nnz_idx_t\fP \fBnnz\fP, \fBrsb_flags_t\fP \fBflags\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBget_vec\fP (NT *\fBDp\fP, \fBenum\fP \fBrsb_extff_t\fP \fBflags\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBget_coo\fP (\fBrsb_trans_t\fP \fBtransA\fP, NT *\fBVA\fP, \fBrsb_coo_idx_t\fP *\fBIA\fP, \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBrsb_flags_t\fP \fBflags\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBget_csr\fP (\fBrsb_trans_t\fP \fBtransA\fP, NT *\fBVA\fP, \fBrsb_coo_idx_t\fP *\fBRP\fP, \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBrsb_flags_t\fP \fBflags\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBget_rows_sparse\fP (\fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT *\fBalphap\fP, NT *\fBVA\fP, \fBrsb_coo_idx_t\fP *\fBIA\fP, \fBrsb_coo_idx_t\fP *\fBJA\fP, \fBrsb_coo_idx_t\fP \fBfrA\fP, \fBrsb_coo_idx_t\fP \fBlrA\fP, \fBrsb_nnz_idx_t\fP *\fBrnzp\fP, \fBrsb_flags_t\fP \fBflags\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBupd_vals\fP (\fBenum\fP \fBrsb_elopf_t\fP \fBelop_flags\fP, \fBconst\fP NT &\fBomega\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBupd_vals\fP (\fBenum\fP \fBrsb_elopf_t\fP \fBelop_flags\fP, \fBconst\fP NT *\fBomegap\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBget_nrm\fP (NT *\fBNp\fP, \fBenum\fP \fBrsb_extff_t\fP \fBflags\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_type_t\fP \fBrsbtype\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_flags_t\fP \fBrsbflags\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_string_t\fP \fBget_info_str\fP (\fBconst\fP \fBchar\fP *\fBkey\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBget_info\fP (\fBenum\fP \fBrsb_mif_t\fP \fBmiflags\fP, \fBvoid\fP *\fBminfop\fP) \fBconst\fP" .br .ti -1c .RI "\fBrsb_string_t\fP \fB_info\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBtune_spsm_threads\fP (\fBrsb_real_t\fP *\fBsfp\fP=\fBRSBP_NULL\fP, \fBrsb_int_t\fP *\fBtnp\fP=\fBRSBP_NULL\fP, \fBrsb_int_t\fP \fBmaxr\fP=0, \fBrsb_time_t\fP \fBmaxt\fP=0, \fBrsb_trans_t\fP \fBtransA\fP=\fBRSB_TRANSPOSITION_N\fP, \fBconst\fP NT *\fBalphap\fP=\fBRSBP_NULL\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP=1, \fBrsb_flags_t\fP \fBorder\fP=\fBRSB_FLAG_WANT_COLUMN_MAJOR_ORDER\fP, \fBconst\fP NT *\fBBp\fP=\fBRSBP_NULL\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP=0, \fBconst\fP NT *\fBbetap\fP=\fBRSBP_NULL\fP, NT *\fBCp\fP=\fBRSBP_NULL\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP=0) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBtune_spmm_threads\fP (\fBrsb_real_t\fP *\fBsfp\fP=\fBRSBP_NULL\fP, \fBrsb_int_t\fP *\fBtnp\fP=\fBRSBP_NULL\fP, \fBrsb_int_t\fP \fBmaxr\fP=0, \fBrsb_time_t\fP \fBmaxt\fP=0, \fBrsb_trans_t\fP \fBtransA\fP=\fBRSB_TRANSPOSITION_N\fP, \fBconst\fP NT *\fBalphap\fP=\fBRSBP_NULL\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP=1, \fBrsb_flags_t\fP \fBorder\fP=\fBRSB_FLAG_WANT_COLUMN_MAJOR_ORDER\fP, \fBconst\fP NT *\fBBp\fP=\fBRSBP_NULL\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP=0, \fBconst\fP NT *\fBbetap\fP=\fBRSBP_NULL\fP, NT *\fBCp\fP=\fBRSBP_NULL\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP=0) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBtune_spmm\fP (\fBrsb_real_t\fP *\fBsfp\fP, \fBrsb_int_t\fP *\fBtnp\fP, \fBrsb_int_t\fP \fBmaxr\fP, \fBrsb_time_t\fP \fBmaxt\fP, \fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT *\fBalphap\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, \fBconst\fP NT *\fBbetap\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBtune_spmm\fP (\fBrsb_real_t\fP *\fBsfp\fP, \fBrsb_int_t\fP *\fBtnp\fP, \fBrsb_int_t\fP \fBmaxr\fP, \fBrsb_time_t\fP \fBmaxt\fP, \fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT \fBalpha\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, \fBconst\fP NT \fBbeta\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBtune_spmm\fP (\fBrsb_real_t\fP &\fBsf\fP, \fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT \fBalpha\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBconst\fP NT \fBbeta\fP, NT *\fBCp\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBtune_spsm\fP (\fBrsb_real_t\fP *\fBsfp\fP, \fBrsb_int_t\fP *\fBtnp\fP, \fBrsb_int_t\fP \fBmaxr\fP, \fBrsb_time_t\fP \fBmaxt\fP, \fBrsb_trans_t\fP \fBtransA\fP, \fBconst\fP NT *\fBalphap\fP, \fBrsb_coo_idx_t\fP \fBnrhs\fP, \fBrsb_flags_t\fP \fBorder\fP, \fBconst\fP NT *\fBBp\fP, \fBrsb_nnz_idx_t\fP \fBldB\fP, \fBconst\fP NT *\fBbetap\fP, NT *\fBCp\fP, \fBrsb_nnz_idx_t\fP \fBldC\fP)" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBfile_save\fP (\fBconst\fP \fBrsb_char_t\fP *\fBfilename\fP=\fBRSBP_NULL\fP) \fBconst\fP" .br .ti -1c .RI "\fBRsbMatrix\fP & \fBoperator=\fP (\fBconst\fP \fBRsbMatrix\fP &\fBA_Rsb\fP)" .br .ti -1c .RI "\fBbool\fP \fB_is_complex\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBbool\fP \fBoperator==\fP (\fBconst\fP \fBRsbMatrix\fP &\fBB_Rsb\fP) \fBconst\fP" .br .ti -1c .RI "\fBbool\fP \fBoperator!=\fP (\fBconst\fP \fBRsbMatrix\fP &\fBB_Rsb\fP) \fBconst\fP" .br .ti -1c .RI "NT \fBnormOne\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "NT \fBnormInf\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBRSBP_RVT\fP \fBErr_t\fP \fBrndr\fP (\fBconst\fP \fBrsb_char_t\fP *\fBfilename\fP=\fBRSBP_NULL\fP, \fBrsb_coo_idx_t\fP \fBpmWidth\fP=512, \fBrsb_coo_idx_t\fP \fBpmHeight\fP=512, \fBrsb_marf_t\fP \fBrflags\fP=\fBRSB_MARF_EPS\fP) \fBconst\fP" .br .in -1c .SH "Detailed Description" .PP .SS "template<\fBRSBP_Scalar_t\fP NT> .br class RsbMatrix< NT >"Represent a sparse matrix in RSB format by means of \fClibrsb\fP\&. Manage construction, destruction, and std::move of numerical matrices\&. .br Most of the member functions here translate directly to a single function call to \fClibrsb\fP (\fC\fBrsb\&.h\fP\fP), and pass the parameters as they are, so the error checking is done by \fClibrsb\fP\&. .br While most of \fClibrsb\fP \fCC\fP functions use \fCvoid*\fP pointers instead of numerical data, \fC\fBRsbMatrix\fP\fP is templated by a type parameter\&. This introduces type safety at compile time\&. .PP Users of member functions can choose among several overloads\&. So in additional to the more direct overloads passing e\&.g\&. $ alpha $ and $ beta $ by reference, here a user can pass them by value\&. .PP \fBParameters\fP .RS 4 \fINT\fP the numerical type, at least for the four canonical ones (\fCfloat\fP, \fCdouble\fP, \fCstd::complex\fP, \fCstd::complex\fP); see \fBmatrix_supported_numerical_types_section\fP and \fBrsb_type_t\fP for more\&. .RE .PP \fBNote\fP .RS 4 Default error propagation is by exception throw for all constructors and most member functions\&. .br Functions declared to return Err_t can be specialized in rsb_err_t so not to throw exceptions, but to return an error code instead\&. .br Exceptions thrown by member functions (not constructors) can be deactivated at build time by defining \fBRSBP_NOTHROW\fP before including \fC<\fBrsb\&.hpp\fP>\fP\&. .PP One may turn on return error value as default at build time by defining \fBRSBP_WANT_REV=1\fP \&. .RE .PP \fBWarning\fP .RS 4 The error model is work in progress and subject to change\&. .RE .PP \fBTodo\fP .RS 4 While the \fC\fBrsb\&.h\fP\fP interface is stable, the \fC\fBrsb\&.hpp\fP\fP interface is neither stable, nor complete: early users' feedback is very welcome\&. .br Shall all $ alpha $ and $ beta $ be passed by values only? This is natural and fits C++\&. But \fBrsb_tune_spmm()\fP / \fBrsb_tune_spsm()\fP have more parameters with a nullptr-like `default' value: how to deal with them in \fBRsbMatrix::tune_spmm()\fP / \fBRsbMatrix::tune_spsm()\fP without introducing too many special cases ? .br Similarly for the consistency of \fBRsbMatrix::get_flags_t()\fP, \fBRsbMatrix::get_type_t()\fP, \fBRsbMatrix::get_info_coo_t()\fP, and similar: shall they throw an exception if given a flag not matching the return type ? .br Or maybe keeping only \fBRsbMatrix::get_info()\fP, with per-type reference overloads ? .br Furthermore: if working under C++20, shall \fB\fBRsbLib\fP\fP avoid pointer-based interfaces completely (using \fCstd::span\fP only)? .RE .PP .SH "Member Enumeration Documentation" .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBenum\fP \fBRsbMatrix::RsbSym\fP" Matrix structure: either general, symmetric, hermitian, or triangular (also see \fBrsb_flags_t\fP)\&. .PP \fBEnumerator\fP .in +1c .TP \fB\fIIsGen \fP\fP General matrix, no triangle structure or symmetry assumed\&. .TP \fB\fIIsHer \fP\fP Hermitian ( $ A == A^H $)\&. Please pass only lower/upper triangle\&. .TP \fB\fIIsSym \fP\fP Symmetric ( $ A == A^T $)\&. Please pass only lower/upper triangle\&. .TP \fB\fIIsTri \fP\fP Triangular (required for \fBspsv/\fP spsm)\&. .SH "Constructor & Destructor Documentation" .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >\fB::RsbMatrix\fP (\fBrsb_coo_idx_t\fP nrA, \fBrsb_coo_idx_t\fP ncA, \fBconst\fP \fBRsbSym\fP sym = \fC\fBIsGen\fP\fP)\fC [inline]\fP" Begin assembling a sparse matrix of given dimensions and type\&. .br Then you can use \fBset_val()\fP or \fBset_vals()\fP repeatedly to populate the matrix\&. .br After populating the matrix, use \fBclose()\fP to terminate its assembly\&. .br Example snip from \fBexamples/assemble\&.cpp\fP: .PP .nf const rsb_coo_idx_t nrA { 4 }, ncA { 4 }; RsbMatrix mtx(nrA,ncA); // begin matrix assembly // insert elements of a tridiagonal matrix, one by one for (auto i = 0; i < nrA; ++i ) for (auto j = i\-1; j <= i+1; ++j ) if ( i >= 0 && i < nrA ) if ( j >= 0 && j < ncA ) mtx\&.set_val((i+1)*100+(j+1),i,j); // add entry mtx\&.close(); // finish matrix assembly assert(mtx\&.nnz() == 3 * nrA \- 2); .fi .PP .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_alloc_from_coo_begin()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >\fB::RsbMatrix\fP (\fBrsb_coo_idx_t\fP nrA, \fBconst\fP \fBrsb_coo_idx_t\fP * RP, \fBconst\fP \fBrsb_coo_idx_t\fP * JA, \fBconst\fP NT * VA, \fBconst\fP \fBRsbSym\fP sym = \fC\fBIsGen\fP\fP)\fC [inline]\fP" Assemble a sparse matrix given CSR input\&. .br \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_alloc_from_csr_const()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >\fB::RsbMatrix\fP (\fBconst\fP \fBrsb_coo_idx_t\fP * IA, \fBconst\fP \fBrsb_coo_idx_t\fP * JA, \fBconst\fP NT * VA, \fBrsb_nnz_idx_t\fP nnzA, \fBconst\fP \fBrsb_flags_t\fP flagsA = \fC\fBRSB_FLAG_NOFLAGS\fP\fP)\fC [inline]\fP" Assemble a sparse matrix given COO input\&. .br Example snip from \fBexamples/misc\&.cpp\fP: .PP .nf const rsb_nnz_idx_t nnzA { 7 }; const rsb_coo_idx_t nrA { 6 }, ncA { 6 }, nrhs { 1 }; const std::vector IA {0,1,2,3,4,5,1}, JA {0,1,2,3,4,5,0}; const std::vector VA {1,1,1,1,1,1,2}, X(ncA,1); RsbMatrix mtx(IA\&.data(),JA\&.data(),VA\&.data(),nnzA); .fi .PP .br \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_alloc_from_coo_const()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >\fB::RsbMatrix\fP (\fBconst\fP \fBrsb_char_t\fP * filename, \fBconst\fP \fBRsbSym\fP sym = \fC\fBIsGen\fP\fP)\fC [inline]\fP" Assemble a sparse matrix given filename input\&. .br \fBNote\fP .RS 4 Directly based on C function \fBrsb_file_mtx_load()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >\fB::RsbMatrix\fP (\fBconst\fP \fBRsbMatrix\fP< NT > & A_Rsb, \fBbool\fP do_trans = \fC\fBfalse\fP\fP, \fBrsb_flags_t\fP flagsA = \fC\fBRSB_FLAG_NOFLAGS\fP\fP)\fC [inline]\fP" Copy a sparse matrix given example input\&. .br Can either clone it, or transpose it or change flags (structure) in the process\&. .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >\fB::RsbMatrix\fP (\fBRsbMatrix\fP< NT > && other)\fC [inline]\fP" Move constructor\&. .br The moved matrix object will be invalid afterwards\&. .br Example snip from \fBexamples/misc\&.cpp\fP: .PP .nf assert( mtx1\&.nnz() == nnzA ); RsbMatrix mtx3 { std::move(mtx1) }; assert( mtx3\&.nnz() == nnzA ); .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP< NT >::~\fBRsbMatrix\fP (\fBvoid\fP)\fC [inline]\fP" Destructor\&. .br Frees matrix object memory\&. .br \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_free()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SH "Member Function Documentation" .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::_add (\fBrsb_coo_idx_t\fP i, \fBrsb_coo_idx_t\fP j, NT val)\fC [inline]\fP" .PP \fBDeprecated\fP .RS 4 Use \fBset_val()\fP and \fBset_vals()\fP instead\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::_close (\fBvoid\fP)\fC [inline]\fP" .PP \fBDeprecated\fP .RS 4 Use \fBclose()\fP instead\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBsize_t\fP \fBRsbMatrix\fP< NT >::_get_index_storage_bytes (\fBvoid\fP) const\fC [inline]\fP" .PP \fBWarning\fP .RS 4 The name of this member function is expected to change\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBsize_t\fP \fBRsbMatrix\fP< NT >::_get_storage_bytes (\fBvoid\fP) const\fC [inline]\fP" .PP \fBWarning\fP .RS 4 The name of this member function is expected to change\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_string_t\fP \fBRsbMatrix\fP< NT >::_info (\fBvoid\fP) const\fC [inline]\fP" .PP \fBWarning\fP .RS 4 The name of this member function is expected to change\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBbool\fP \fBRsbMatrix\fP< NT >::_is_complex (\fBvoid\fP) const\fC [inline]\fP" .PP \fBWarning\fP .RS 4 The name of this member function is expected to change\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_blk_idx_t\fP \fBRsbMatrix\fP< NT >::blocks (\fBvoid\fP) const\fC [inline]\fP" .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::close (\fBvoid\fP)\fC [inline]\fP" Terminate assembly of a previously started and populated matrix\&. .br Shall be called once\&. .PP Example snip from \fBexamples/assemble\&.cpp\fP: .PP .nf const rsb_coo_idx_t nrA { 4 }, ncA { 4 }; RsbMatrix mtx(nrA,ncA); // begin matrix assembly // insert elements of a tridiagonal matrix, one by one for (auto i = 0; i < nrA; ++i ) for (auto j = i\-1; j <= i+1; ++j ) if ( i >= 0 && i < nrA ) if ( j >= 0 && j < ncA ) mtx\&.set_val((i+1)*100+(j+1),i,j); // add entry mtx\&.close(); // finish matrix assembly assert(mtx\&.nnz() == 3 * nrA \- 2); .fi .PP .PP \fBSee also\fP .RS 4 \fBRsbMatrix::RsbMatrix\fP(\fBrsb_coo_idx_t\fP \fBnrA\fP, \fBrsb_coo_idx_t\fP \fBncA\fP, \fBconst\fP \fBRsbSym\fP \fBsym\fP = \fBIsGen\fP ); .RE .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_alloc_from_coo_end()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_coo_idx_t\fP \fBRsbMatrix\fP< NT >::cols (\fBvoid\fP) const\fC [inline]\fP" Example snip from \fBexamples/twonnz\&.cpp\fP: .PP .nf std::cout << "# Matrix sized " << mtx\&.rows() << "x" << mtx\&.cols() << ", " << nnzA << " nnz built in " << dt << " s and occupies " << mtxocc << " bytes " << std::endl; .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::file_save (\fBconst\fP \fBrsb_char_t\fP * filename = \fC\fBRSBP_NULL\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_file_mtx_save()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/misc\&.cpp\fP: .PP .nf mtx\&.file_save(); // print to stdout .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_coo (\fBrsb_trans_t\fP transA, NT * VA, \fBrsb_coo_idx_t\fP * IA, \fBrsb_coo_idx_t\fP * JA, \fBrsb_flags_t\fP flags) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_coo()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBWarning\fP .RS 4 Only \fCtransA=RSB_TRANSPOSITION_N\fP currently supported\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_csr (\fBrsb_trans_t\fP transA, NT * VA, \fBrsb_coo_idx_t\fP * RP, \fBrsb_coo_idx_t\fP * JA, \fBrsb_flags_t\fP flags) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_csr()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBWarning\fP .RS 4 Only \fCtransA=RSB_TRANSPOSITION_N\fP currently supported\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_flags_t\fP \fBRsbMatrix\fP< NT >::get_flags_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_info (\fBenum\fP \fBrsb_mif_t\fP miflags, \fBvoid\fP * minfop) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_blk_idx_t\fP \fBRsbMatrix\fP< NT >::get_info_blk_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_coo_idx_t\fP \fBRsbMatrix\fP< NT >::get_info_coo_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_nnz_idx_t\fP \fBRsbMatrix\fP< NT >::get_info_nnz_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_flags_t\fP \fBRsbMatrix\fP< NT >::get_info_rsb_flags_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBsize_t\fP \fBRsbMatrix\fP< NT >::get_info_size_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_string_t\fP \fBRsbMatrix\fP< NT >::get_info_str (\fBconst\fP \fBchar\fP * key) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info_str()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_nrm (NT * Np, \fBenum\fP \fBrsb_extff_t\fP flags) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_nrm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_rows_sparse (\fBrsb_trans_t\fP transA, \fBconst\fP NT * alphap, NT * VA, \fBrsb_coo_idx_t\fP * IA, \fBrsb_coo_idx_t\fP * JA, \fBrsb_coo_idx_t\fP frA, \fBrsb_coo_idx_t\fP lrA, \fBrsb_nnz_idx_t\fP * rnzp, \fBrsb_flags_t\fP flags) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_rows_sparse()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_type_t\fP \fBRsbMatrix\fP< NT >::get_type_t (\fBenum\fP \fBrsb_mif_t\fP mif) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_info()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> NT \fBRsbMatrix\fP< NT >::get_val (\fBconst\fP \fBrsb_coo_idx_t\fP i, \fBconst\fP \fBrsb_coo_idx_t\fP j, \fBrsb_flags_t\fP flags = \fC\fBRSB_FLAG_NOFLAGS\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_vals()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_vals (NT * VA, \fBconst\fP \fBrsb_coo_idx_t\fP * IA, \fBconst\fP \fBrsb_coo_idx_t\fP * JA, \fBrsb_nnz_idx_t\fP nnz, \fBrsb_flags_t\fP flags) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_vals()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::get_vec (NT * Dp, \fBenum\fP \fBrsb_extff_t\fP flags) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_get_vec()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_nnz_idx_t\fP \fBRsbMatrix\fP< NT >::nnz (\fBvoid\fP) const\fC [inline]\fP" .SS "template<\fBRSBP_Scalar_t\fP NT> NT \fBRsbMatrix\fP< NT >::normInf (\fBvoid\fP) const\fC [inline]\fP" .SS "template<\fBRSBP_Scalar_t\fP NT> NT \fBRsbMatrix\fP< NT >::normOne (\fBvoid\fP) const\fC [inline]\fP" .SS "template<\fBRSBP_Scalar_t\fP NT> \fBbool\fP \fBRsbMatrix\fP< NT >\fB::operator!\fP= (\fBconst\fP \fBRsbMatrix\fP< NT > & B_Rsb) const\fC [inline]\fP" Example snip from \fBexamples/misc\&.cpp\fP: .PP .nf assert( mtx1 == mtx2 ); assert( !(mtx1 != mtx2) ); .fi .PP .PP \fBSee also\fP .RS 4 \fBRsbMatrix::operator==(const RsbMatrix & B_Rsb) const\fP; .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRsbMatrix\fP & \fBRsbMatrix\fP< NT >\fB::operator\fP= (\fBconst\fP \fBRsbMatrix\fP< NT > & A_Rsb)\fC [inline]\fP" A copy constructor\&. Will clone the input matrix contents\&. .SS "template<\fBRSBP_Scalar_t\fP NT> \fBbool\fP \fBRsbMatrix\fP< NT >\fB::operator\fP== (\fBconst\fP \fBRsbMatrix\fP< NT > & B_Rsb) const\fC [inline]\fP" Deep comparison: compare if the two matrices have same dimensions, nonzeroes count, nonzeroes pattern and value\&. Meant for very sporadic use\&. Inefficient: it can involve matrices copying\&. .PP Example snip from \fBexamples/misc\&.cpp\fP: .PP .nf assert( mtx1 == mtx2 ); assert( !(mtx1 != mtx2) ); .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::rndr (\fBconst\fP \fBrsb_char_t\fP * filename = \fC\fBRSBP_NULL\fP\fP, \fBrsb_coo_idx_t\fP pmWidth = \fC512\fP, \fBrsb_coo_idx_t\fP pmHeight = \fC512\fP, \fBrsb_marf_t\fP rflags = \fC\fBRSB_MARF_EPS\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_rndr()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/render\&.cpp\fP: .PP .nf mtx\&.rndr(psfilename\&.c_str()); .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_coo_idx_t\fP \fBRsbMatrix\fP< NT >::rows (\fBvoid\fP) const\fC [inline]\fP" Example snip from \fBexamples/twonnz\&.cpp\fP: .PP .nf std::cout << "# Matrix sized " << mtx\&.rows() << "x" << mtx\&.cols() << ", " << nnzA << " nnz built in " << dt << " s and occupies " << mtxocc << " bytes " << std::endl; .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_flags_t\fP \fBRsbMatrix\fP< NT >::rsbflags (\fBvoid\fP) const\fC [inline]\fP" .SS "template<\fBRSBP_Scalar_t\fP NT> \fBrsb_type_t\fP \fBRsbMatrix\fP< NT >::rsbtype (\fBvoid\fP) const\fC [inline]\fP" Example snip from \fBexamples/twonnz\&.cpp\fP: .PP .nf std::cout << "# type=" << mtx\&.rsbtype() << " nt=1," << rnt << " n=" << n << " nrhs=" << nrhs << " order=" << oc << " alpha=" << alpha << " beta=" << beta << " dt=" << dta[0] << "\&.\&." << dta[1] << " spmm\-scalability=" << dta[0]/dta[1] << " nnz/s=" << nnzA/dta[0] << "\&.\&." << nnzA/dta[1] << " flops=" << flops_c/dta[0] << "\&.\&." << flops_c/dta[1] << " occ\&.=" << opocc << " " << std::endl; .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::set_val (\fBconst\fP NT val, \fBconst\fP \fBrsb_coo_idx_t\fP i, \fBconst\fP \fBrsb_coo_idx_t\fP j, \fBrsb_flags_t\fP flags = \fC\fBRSB_FLAG_NOFLAGS\fP\fP)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_set_vals()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/assemble\&.cpp\fP: .PP .nf const rsb_coo_idx_t nrA { 4 }, ncA { 4 }; RsbMatrix mtx(nrA,ncA); // begin matrix assembly // insert elements of a tridiagonal matrix, one by one for (auto i = 0; i < nrA; ++i ) for (auto j = i\-1; j <= i+1; ++j ) if ( i >= 0 && i < nrA ) if ( j >= 0 && j < ncA ) mtx\&.set_val((i+1)*100+(j+1),i,j); // add entry mtx\&.close(); // finish matrix assembly assert(mtx\&.nnz() == 3 * nrA \- 2); .fi .PP .PP \fBSee also\fP .RS 4 \fBset_vals()\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::set_vals (\fBconst\fP NT * VA, \fBconst\fP \fBrsb_coo_idx_t\fP * IA, \fBconst\fP \fBrsb_coo_idx_t\fP * JA, \fBrsb_nnz_idx_t\fP nnz, \fBrsb_flags_t\fP flags)\fC [inline]\fP" Add a single entry during the assembly of a matrix created empty\&. .br Use \fBclose()\fP to terminate matrix assembly\&. .PP Example snip from \fBexamples/assemble\&.cpp\fP: .PP .nf const rsb_coo_idx_t nrA { 4 }, ncA { 4 }; RsbMatrix mtx(nrA,ncA); // begin matrix assembly // insert elements of a tridiagonal matrix, one by one for (auto i = 0; i < nrA; ++i ) for (auto j = i\-1; j <= i+1; ++j ) if ( i >= 0 && i < nrA ) if ( j >= 0 && j < ncA ) mtx\&.set_val((i+1)*100+(j+1),i,j); // add entry mtx\&.close(); // finish matrix assembly assert(mtx\&.nnz() == 3 * nrA \- 2); .fi .PP .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_set_vals()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmm (\fBrsb_trans_t\fP transA, \fBconst\fP NT * alphap, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, \fBconst\fP NT * betap, NT * Cp, \fBrsb_nnz_idx_t\fP ldC) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmm (\fBrsb_trans_t\fP transA, \fBconst\fP NT alpha, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBconst\fP NT beta, NT * Cp) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmm (\fBrsb_trans_t\fP transA, \fBconst\fP NT alpha, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, \fBconst\fP NT beta, NT * Cp, \fBrsb_nnz_idx_t\fP ldC) const\fC [inline]\fP" Example snip from \fBexamples/bench\&.cpp\fP: .PP .nf mtx\&.spmm(transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); .fi .PP .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmv (NT * y, \fBconst\fP NT * x, \fBbool\fP do_trans = \fC\fBfalse\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spmv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/span\&.cpp\fP: .PP .nf mtx\&.tune_spmm(nullptr,&tn,0,0\&.0,RSB_TRANSPOSITION_N,alpha,nrhs,RSB_FLAG_WANT_COLUMN_MAJOR_ORDER,X,ncA,beta,Y,nrA); mtx\&.spmv(RSB_TRANSPOSITION_N, alpha, X, beta, Y); .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmv (\fBrsb_trans_t\fP transA, \fBconst\fP NT * alphap, \fBconst\fP NT * Xp, \fBrsb_coo_idx_t\fP incX, \fBconst\fP NT * betap, NT * Yp, \fBrsb_coo_idx_t\fP incY) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_spmv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmv (\fBrsb_trans_t\fP transA, \fBconst\fP NT alpha, \fBconst\fP NT * Xp, \fBconst\fP NT beta, NT * Yp) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spmv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/span\&.cpp\fP: .PP .nf mtx\&.tune_spmm(nullptr,&tn,0,0\&.0,RSB_TRANSPOSITION_N,alpha,nrhs,RSB_FLAG_WANT_COLUMN_MAJOR_ORDER,X,ncA,beta,Y,nrA); mtx\&.spmv(RSB_TRANSPOSITION_N, alpha, X, beta, Y); .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spmv (\fBrsb_trans_t\fP transA, \fBconst\fP NT alpha, \fBconst\fP NT * Xp, \fBrsb_coo_idx_t\fP incX, \fBconst\fP NT beta, NT * Yp, \fBrsb_coo_idx_t\fP incY) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spmv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/span\&.cpp\fP: .PP .nf mtx\&.tune_spmm(nullptr,&tn,0,0\&.0,RSB_TRANSPOSITION_N,alpha,nrhs,RSB_FLAG_WANT_COLUMN_MAJOR_ORDER,X,ncA,beta,Y,nrA); mtx\&.spmv(RSB_TRANSPOSITION_N, alpha, X, beta, Y); .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsm (NT * y, \fBconst\fP NT * x, \fBrsb_coo_idx_t\fP nrhs, \fBbool\fP do_trans = \fC\fBfalse\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsm (NT * y, \fBrsb_coo_idx_t\fP nrhs, \fBbool\fP do_trans = \fC\fBfalse\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsm (\fBrsb_trans_t\fP transT, \fBconst\fP NT * alphap, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * betap, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, NT * Cp, \fBrsb_nnz_idx_t\fP ldC) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsm (\fBrsb_trans_t\fP transT, \fBconst\fP NT alpha, \fBrsb_coo_idx_t\fP nrhs, \fBconst\fP NT * Bp, NT * Cp) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsm (\fBrsb_trans_t\fP transT, \fBconst\fP NT alpha, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT beta, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, NT * Cp, \fBrsb_nnz_idx_t\fP ldC) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsv (NT * y, \fBbool\fP do_trans = \fC\fBfalse\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsv (NT * y, \fBconst\fP NT * x, \fBbool\fP do_trans = \fC\fBfalse\fP\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsv (\fBrsb_trans_t\fP transT, \fBconst\fP NT * alphap, \fBconst\fP NT * Xp, \fBrsb_coo_idx_t\fP incX, NT * Yp, \fBrsb_coo_idx_t\fP incY) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_spsv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::spsv (\fBrsb_trans_t\fP transT, \fBconst\fP NT alpha, \fBconst\fP NT * Xp, NT * Yp) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_spsv()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::tune_spmm (\fBrsb_real_t\fP & sf, \fBrsb_trans_t\fP transA, \fBconst\fP NT alpha, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBconst\fP NT beta, NT * Cp)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_tune_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/autotune\&.cpp\fP: .PP .nf tt = \-rsb_time(); mtx\&.tune_spmm(&sf,&tn,maxr,tmax,transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); tt += rsb_time(); auto nnsmA {mtx\&.blocks()}; std::cout << "Tuning took " << tt << " s ( " << tt / dt << " ops ) and changed " << nsmA << " to " << nnsmA << " blocks" << std::endl; mtx\&.spmm(transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); // caches warmup .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::tune_spmm (\fBrsb_real_t\fP * sfp, \fBrsb_int_t\fP * tnp, \fBrsb_int_t\fP maxr, \fBrsb_time_t\fP maxt, \fBrsb_trans_t\fP transA, \fBconst\fP NT * alphap, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, \fBconst\fP NT * betap, NT * Cp, \fBrsb_nnz_idx_t\fP ldC)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_tune_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/autotune\&.cpp\fP: .PP .nf tt = \-rsb_time(); mtx\&.tune_spmm(&sf,&tn,maxr,tmax,transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); tt += rsb_time(); auto nnsmA {mtx\&.blocks()}; std::cout << "Tuning took " << tt << " s ( " << tt / dt << " ops ) and changed " << nsmA << " to " << nnsmA << " blocks" << std::endl; mtx\&.spmm(transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); // caches warmup .fi .PP .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::tune_spmm (\fBrsb_real_t\fP * sfp, \fBrsb_int_t\fP * tnp, \fBrsb_int_t\fP maxr, \fBrsb_time_t\fP maxt, \fBrsb_trans_t\fP transA, \fBconst\fP NT alpha, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, \fBconst\fP NT beta, NT * Cp, \fBrsb_nnz_idx_t\fP ldC)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Indirectly based on C function \fBrsb_tune_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/autotune\&.cpp\fP: .PP .nf tt = \-rsb_time(); mtx\&.tune_spmm(&sf,&tn,maxr,tmax,transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); tt += rsb_time(); auto nnsmA {mtx\&.blocks()}; std::cout << "Tuning took " << tt << " s ( " << tt / dt << " ops ) and changed " << nsmA << " to " << nnsmA << " blocks" << std::endl; mtx\&.spmm(transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); // caches warmup .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::tune_spmm_threads (\fBrsb_real_t\fP * sfp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_int_t\fP * tnp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_int_t\fP maxr = \fC0\fP, \fBrsb_time_t\fP maxt = \fC0\fP, \fBrsb_trans_t\fP transA = \fC\fBRSB_TRANSPOSITION_N\fP\fP, \fBconst\fP NT * alphap = \fC\fBRSBP_NULL\fP\fP, \fBrsb_coo_idx_t\fP nrhs = \fC1\fP, \fBrsb_flags_t\fP order = \fC\fBRSB_FLAG_WANT_COLUMN_MAJOR_ORDER\fP\fP, \fBconst\fP NT * Bp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_nnz_idx_t\fP ldB = \fC0\fP, \fBconst\fP NT * betap = \fC\fBRSBP_NULL\fP\fP, NT * Cp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_nnz_idx_t\fP ldC = \fC0\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_tune_spmm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/autotune\&.cpp\fP: .PP .nf tt = \-rsb_time(); mtx\&.tune_spmm(&sf,&tn,maxr,tmax,transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); tt += rsb_time(); auto nnsmA {mtx\&.blocks()}; std::cout << "Tuning took " << tt << " s ( " << tt / dt << " ops ) and changed " << nsmA << " to " << nnsmA << " blocks" << std::endl; mtx\&.spmm(transA,&alpha,nrhs,order,B\&.data(),ldB,&beta,C\&.data(),ldC); // caches warmup .fi .PP .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::tune_spsm (\fBrsb_real_t\fP * sfp, \fBrsb_int_t\fP * tnp, \fBrsb_int_t\fP maxr, \fBrsb_time_t\fP maxt, \fBrsb_trans_t\fP transA, \fBconst\fP NT * alphap, \fBrsb_coo_idx_t\fP nrhs, \fBrsb_flags_t\fP order, \fBconst\fP NT * Bp, \fBrsb_nnz_idx_t\fP ldB, \fBconst\fP NT * betap, NT * Cp, \fBrsb_nnz_idx_t\fP ldC)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_tune_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBRSBP_DEPRECATED\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::tune_spsm_threads (\fBrsb_real_t\fP * sfp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_int_t\fP * tnp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_int_t\fP maxr = \fC0\fP, \fBrsb_time_t\fP maxt = \fC0\fP, \fBrsb_trans_t\fP transA = \fC\fBRSB_TRANSPOSITION_N\fP\fP, \fBconst\fP NT * alphap = \fC\fBRSBP_NULL\fP\fP, \fBrsb_coo_idx_t\fP nrhs = \fC1\fP, \fBrsb_flags_t\fP order = \fC\fBRSB_FLAG_WANT_COLUMN_MAJOR_ORDER\fP\fP, \fBconst\fP NT * Bp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_nnz_idx_t\fP ldB = \fC0\fP, \fBconst\fP NT * betap = \fC\fBRSBP_NULL\fP\fP, NT * Cp = \fC\fBRSBP_NULL\fP\fP, \fBrsb_nnz_idx_t\fP ldC = \fC0\fP) const\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_tune_spsm()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::upd_vals (\fBenum\fP \fBrsb_elopf_t\fP elop_flags, \fBconst\fP NT & omega)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_upd_vals()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP Example snip from \fBexamples/bench\&.cpp\fP: .PP .nf mtx\&.upd_vals(RSB_ELOPF_POW,nt_t{0\&.0}); // set matrix values to ones .fi .PP .SS "template<\fBRSBP_Scalar_t\fP NT> \fBRSBP_RVT\fP \fBErr_t\fP \fBRsbMatrix\fP< NT >::upd_vals (\fBenum\fP \fBrsb_elopf_t\fP elop_flags, \fBconst\fP NT * omegap)\fC [inline]\fP" .PP \fBNote\fP .RS 4 Directly based on C function \fBrsb_mtx_upd_vals()\fP from \fC<\fBrsb\&.h\fP>\fP\&. .RE .PP \fBDeprecated\fP .RS 4 This function overload is deprecated: use the corresponding overload without the C-style pointers-to-scalar, or request one if non existing yet\&. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for librsb from the source code\&.