00001 00028 #if !defined(INC_OSKI_MBCSR_FORMAT_H) 00029 00030 #define INC_OSKI_MBCSR_FORMAT_H 00031 00032 #include <oski/common.h> 00033 #include <oski/matrix.h> 00034 #include <oski/BCSR/format.h> 00035 00036 #if defined(DO_NAME_MANGLING) 00037 00039 00041 #define oski_submatMBCSR_t MANGLE_(oski_submatMBCSR_t) 00042 #define oski_matMBCSR_t MANGLE_(oski_matMBCSR_t) 00043 00044 #define oski_MBCSR_MatMult_funcpt MANGLE_(oski_MBCSR_MatMult_funcpt) 00045 00046 #endif 00047 00088 typedef struct tagOski_submatMBCSR_t 00089 { 00091 oski_index_t num_block_rows; 00092 00093 oski_index_t offset; 00094 oski_index_t r; 00095 oski_index_t c; 00097 oski_index_t *bptr; 00098 oski_index_t *bind; 00099 oski_value_t *bval; 00100 oski_value_t *bdiag; 00102 char *mod_name; 00103 void *mod_cached; 00104 } 00105 oski_submatMBCSR_t; 00106 00133 typedef struct tagBebop_matMBCSR_t 00134 { 00135 oski_submatMBCSR_t A1; 00136 oski_submatMBCSR_t A2; 00137 oski_matBCSR_t *p_A3; 00154 struct 00155 { 00156 int is_upper; 00157 int is_lower; 00158 } stored; 00159 00170 struct 00171 { 00172 int MatTransMatMult; 00173 int MatMultAndMatMult; 00174 int MatMultAndMatTransMult; 00175 int MatPowMult; 00176 int MatTransPowMult; 00177 } enabled; 00178 } 00179 oski_matMBCSR_t; 00180 00181 #endif 00182 00183 /* eof */