00001
00007 #if !defined(INC_OSKI_MBCSR_MODULE_H)
00008
00009 #define INC_OSKI_MBCSR_MODULE_H
00010
00011 #include <oski/matmodexport.h>
00012 #include <oski/MBCSR/format.h>
00013
00014 #if defined(DO_NAME_MANGLING)
00015
00017 #define MBCSR_GetSubmatKernel MANGLE_(MBCSR_GetSubmatKernel)
00018 #define MBCSR_InitSubVecView MANGLE_(MBCSR_InitSubVecView)
00019
00020 #define MBCSR_SubmatReprMult_funcpt MANGLE_(MBCSR_SubmatReprMult_funcpt)
00021
00022 #define oski_EnableMBCSRMatMultAndMatMult \
00023 MANGLE_(oski_EnableMBCSRMatMultAndMatMult)
00024 #define oski_EnableMBCSRMatMultAndMatTransMult \
00025 MANGLE_(oski_EnableMBCSRMatMultAndMatTransMult)
00026 #define oski_EnableMBCSRMatTransMatMult \
00027 MANGLE_(oski_EnableMBCSRMatTransMatMult)
00028 #define oski_EnableMBCSRMatPowMult \
00029 MANGLE_(oski_EnableMBCSRMatPowMult)
00030 #define oski_EnableMBCSRMatTransPowMult \
00031 MANGLE_(oski_EnableMBCSRMatTransPowMult)
00032
00033 #endif
00034
00036 typedef int (*MBCSR_SubmatReprMult_funcpt) (const oski_submatMBCSR_t * A,
00037 oski_matop_t opA,
00038 oski_value_t alpha,
00039 const oski_vecview_t x_view,
00040 oski_vecview_t y_view);
00041
00043 typedef int (*MBCSR_SubmatReprTransSubmatReprMult_funcpt) (const
00044 oski_submatMBCSR_t
00045 * A,
00046 oski_value_t alpha,
00047 const
00048 oski_vecview_t x,
00049 oski_vecview_t y,
00050 oski_vecview_t t);
00051
00053 typedef int (*MBCSR_SymmSubmatReprMult_funcpt) (const oski_submatMBCSR_t * A,
00054 int is_herm, oski_matop_t opA,
00055 oski_value_t alpha,
00056 const oski_vecview_t x_view,
00057 oski_vecview_t y_view);
00058
00060 typedef int (*MBCSR_SubmatReprTrisolve_funcpt) (const oski_submatMBCSR_t * T,
00061 int is_lower,
00062 oski_matop_t opT,
00063 oski_value_t alpha,
00064 oski_vecview_t x);
00065
00070 typedef int (*MBCSR_SubmatReprMultAndSubmatReprTransMult_funcpt) (const
00071 oski_submatMBCSR_t
00072 * A,
00073 oski_value_t
00074 alpha,
00075 const
00076 oski_vecview_t
00077 x,
00078 oski_vecview_t
00079 y,
00080 oski_matop_t
00081 opA,
00082 oski_value_t
00083 omega,
00084 const
00085 oski_vecview_t
00086 w,
00087 oski_vecview_t
00088 z);
00089
00091 void *MBCSR_GetSubmatKernel (const oski_submatMBCSR_t * A, const char *name);
00092
00094 void MBCSR_InitSubVecView (const oski_vecview_t x,
00095 oski_index_t row_start, oski_index_t len,
00096 oski_vecview_t x_sub);
00097
00100 void oski_EnableMBCSRMatTransMatMult (oski_matMBCSR_t * A, int v);
00101 void oski_EnableMBCSRMatMultAndMatMult (oski_matMBCSR_t * A, int v);
00102 void oski_EnableMBCSRMatMultAndMatTransMult (oski_matMBCSR_t * A, int v);
00103 void oski_EnableMBCSRMatPowMult (oski_matMBCSR_t * A, int v);
00104 void oski_EnableMBCSRMatTransPowMult (oski_matMBCSR_t * A, int v);
00107 #endif
00108
00109