BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
00001 00006 #if !defined(INC_OSKI_MATCOMMON_H) && !defined(OSKI_UNBIND) 00007 00008 #define INC_OSKI_MATCOMMON_H 00009 00010 #include <oski/common.h> 00011 #include <oski/mangle.h> 00012 00013 #if defined(DO_NAME_MANGLING) 00014 00016 #define oski_matcommon_t MANGLE_(oski_matcommon_t) 00017 #define oski_matspecific_t MANGLE_(oski_matspecific_t) 00018 00019 #define oski_TransposePatternProp MANGLE_(oski_TransposePatternProp) 00020 #define oski_TransposeProps MANGLE_(oski_TransposeProps) 00021 00022 #endif 00023 00030 typedef struct 00031 { 00032 oski_index_t num_rows; 00033 oski_index_t num_cols; 00034 oski_index_t num_nonzeros; 00036 int has_unit_diag; 00039 struct 00040 { 00041 int is_symm; 00042 int is_herm; 00043 int is_tri_upper; 00045 int is_tri_lower; 00047 } pattern; 00048 } 00049 oski_matcommon_t; 00050 00055 #define OSKI_MATPROP_IS_SQUARE(props) ((props)->num_rows == (props)->num_cols) 00056 00061 #define OSKI_MATPROP_IS_TRI(props) \ 00062 ((props)->pattern.is_tri_upper || (props)->pattern.is_tri_lower) 00063 00070 oski_inmatprop_t oski_TransposePatternProp (oski_inmatprop_t pattern); 00071 00073 void oski_TransposeProps (oski_matcommon_t * props); 00074 00075 /* ---------------------------------------------------------- */ 00076 00083 typedef struct 00084 { 00085 oski_id_t type_id; 00086 void *repr; 00087 } 00088 oski_matspecific_t; 00089 00090 #endif /* !defined(INC_OSKI_MATCOMMON_H) */ 00091 00092 #if defined(OSKI_UNBIND) 00093 # include <oski/common.h> 00094 # include <oski/mangle.h> 00095 # undef INC_OSKI_MATCOMMON_H 00096 # undef oski_matcommon_t 00097 # undef oski_matspecific_t 00098 # undef oski_TransposePatternProp 00099 # undef oski_TransposeProps 00100 # undef OSKI_MATPROP_IS_SQUARE 00101 # undef OSKI_MATPROP_IS_TRI 00102 #endif 00103 00104 /* eof */