00001
00007 #if !defined(INC_OSKI_CSR_MODULE_H)
00008
00009 #define INC_OSKI_CSR_MODULE_H
00010
00011 #include <oski/matmodexport.h>
00012
00013 #if defined(DO_NAME_MANGLING)
00014
00016 #define oski_WrapCSR MANGLE_MOD_(oski_WrapCSR)
00017 #define oski_CheckCSR MANGLE_MOD_(oski_CheckCSR)
00018 #define oski_StreamMatRepr MANGLE_MOD_(oski_StreamMatRepr)
00019 #define oski_SortIndices MANGLE_MOD_(oski_SortIndices)
00020 #define oski_ExpandCSRToFull MANGLE_MOD_(oski_ExpandCSRToFull)
00021 #define oski_ConditionallyExpandCSRToFull \
00022 MANGLE_MOD_(oski_ConditionallyExpandCSRToFull)
00023 #define oski_ChangeIndexBase MANGLE_MOD_(oski_ChangeIndexBase)
00024 #define oski_TransposeCSR MANGLE_MOD_(oski_TransposeCSR)
00025 #define oski_CountZeroRowsCSR MANGLE_MOD_(oski_CountZeroRowsCSR)
00026
00027 #endif
00028
00033 int oski_CheckCSR (const oski_index_t * ptr, const oski_index_t * ind,
00034 oski_index_t m, oski_index_t n,
00035 oski_inmatpropset_t * props);
00036
00046 double oski_StreamMatRepr (const void *mat, const oski_matcommon_t * props);
00047
00052 oski_matCSR_t *oski_ExpandCSRToFull (const oski_matCSR_t * S,
00053 const oski_matcommon_t * props);
00054
00059 int oski_ConditionallyExpandCSRToFull (const oski_matCSR_t * S,
00060 const oski_matcommon_t * props,
00061 oski_matCSR_t ** p_mat_full);
00062
00066 void oski_ChangeIndexBase (oski_matCSR_t * A,
00067 const oski_matcommon_t * props,
00068 const oski_index_t new_base);
00069
00074 int oski_SortIndices (oski_matCSR_t * A, oski_index_t m);
00075
00080 oski_matCSR_t *oski_TransposeCSR (const oski_matCSR_t * A,
00081 const oski_matcommon_t * props);
00082
00087 oski_index_t oski_CountZeroRowsCSR (const oski_matCSR_t * A,
00088 const oski_matcommon_t * props);
00089
00094
00099 oski_matCSR_t *oski_WrapCSR (oski_matcommon_t * out_props,
00100 oski_index_t * Aptr, oski_index_t * Aind,
00101 oski_value_t * Aval, oski_index_t num_rows,
00102 oski_index_t num_cols,
00103 oski_inmatpropset_t * props,
00104 oski_copymode_t mode);
00107 #if defined(DO_NAME_MANGLING)
00108
00110 #define CSR_MatTrisolveLower MANGLE_(CSR_MatTrisolveLower)
00111 #define CSR_MatTransTrisolveLower MANGLE_(CSR_MatTransTrisolveLower)
00112 #define CSR_MatConjTrisolveLower MANGLE_(CSR_MatConjTrisolveLower)
00113 #define CSR_MatConjTransTrisolveLower MANGLE_(CSR_MatConjTransTrisolveLower)
00114 #define CSR_MatTrisolveUpper MANGLE_(CSR_MatTrisolveUpper)
00115 #define CSR_MatTransTrisolveUpper MANGLE_(CSR_MatTransTrisolveUpper)
00116 #define CSR_MatConjTrisolveUpper MANGLE_(CSR_MatConjTrisolveUpper)
00117 #define CSR_MatConjTransTrisolveUpper MANGLE_(CSR_MatConjTransTrisolveUpper)
00118
00119 #endif
00120
00123 void CSR_MatTrisolveLower (oski_index_t m, oski_index_t indbase,
00124 int is_unit, int is_sorted,
00125 const oski_index_t * ptr, const oski_index_t * ind,
00126 const oski_value_t * val, oski_value_t alpha,
00127 oski_value_t * x, oski_index_t num_vecs,
00128 oski_index_t rowinc, oski_index_t colinc);
00129
00130 void CSR_MatConjTrisolveLower (oski_index_t m, oski_index_t indbase,
00131 int is_unit, int is_sorted,
00132 const oski_index_t * ptr,
00133 const oski_index_t * ind,
00134 const oski_value_t * val, oski_value_t alpha,
00135 oski_value_t * x, oski_index_t num_vecs,
00136 oski_index_t rowinc, oski_index_t colinc);
00137
00138 void CSR_MatTransTrisolveLower (oski_index_t m, oski_index_t indbase,
00139 int is_unit, int is_sorted,
00140 const oski_index_t * ptr,
00141 const oski_index_t * ind,
00142 const oski_value_t * val, oski_value_t alpha,
00143 oski_value_t * x, oski_index_t num_vecs,
00144 oski_index_t rowinc, oski_index_t colinc);
00145
00146 void CSR_MatConjTransTrisolveLower (oski_index_t m, oski_index_t indbase,
00147 int is_unit, int is_sorted,
00148 const oski_index_t * ptr,
00149 const oski_index_t * ind,
00150 const oski_value_t * val,
00151 oski_value_t alpha, oski_value_t * x,
00152 oski_index_t num_vecs,
00153 oski_index_t rowinc, oski_index_t colinc);
00154
00155 void CSR_MatTrisolveUpper (oski_index_t m, oski_index_t indbase,
00156 int is_unit, int is_sorted,
00157 const oski_index_t * ptr, const oski_index_t * ind,
00158 const oski_value_t * val, oski_value_t alpha,
00159 oski_value_t * x, oski_index_t num_vecs,
00160 oski_index_t rowinc, oski_index_t colinc);
00161
00162 void CSR_MatTransTrisolveUpper (oski_index_t m, oski_index_t indbase,
00163 int is_unit, int is_sorted,
00164 const oski_index_t * ptr,
00165 const oski_index_t * ind,
00166 const oski_value_t * val, oski_value_t alpha,
00167 oski_value_t * x, oski_index_t num_vecs,
00168 oski_index_t rowinc, oski_index_t colinc);
00169
00170 void CSR_MatConjTrisolveUpper (oski_index_t m, oski_index_t indbase,
00171 int is_unit, int is_sorted,
00172 const oski_index_t * ptr,
00173 const oski_index_t * ind,
00174 const oski_value_t * val, oski_value_t alpha,
00175 oski_value_t * x, oski_index_t num_vecs,
00176 oski_index_t rowinc, oski_index_t colinc);
00177
00178 void CSR_MatConjTransTrisolveUpper (oski_index_t m, oski_index_t indbase,
00179 int is_unit, int is_sorted,
00180 const oski_index_t * ptr,
00181 const oski_index_t * ind,
00182 const oski_value_t * val,
00183 oski_value_t alpha, oski_value_t * x,
00184 oski_index_t num_vecs,
00185 oski_index_t rowinc, oski_index_t colinc);
00188 #endif
00189
00190