00001
00009 #if !defined(INC_OSKI_VECVIEW_H) && !defined(OSKI_UNBIND)
00010
00011 #define INC_OSKI_VECVIEW_H
00012
00013 #include <oski/vector.h>
00014
00015 #if defined(DO_NAME_MANGLING)
00016
00018 #define oski_vecview_t MANGLE_(oski_vecview_t)
00019 #define SYMBOLIC_VEC MANGLE_(SYMBOLIC_VEC)
00020 #define SYMBOLIC_MULTIVEC MANGLE_(SYMBOLIC_MULTIVEC)
00021
00022 #define oski_CreateVecView MANGLE_(oski_CreateVecView)
00023 #define oski_CreateMultiVecView MANGLE_(oski_CreateMultiVecView)
00024 #define oski_DestroyVecView MANGLE_(oski_DestroyVecView)
00025 #define oski_CopyVecView MANGLE_(oski_CopyVecView)
00026
00027 #define oski_PrintDebugVecView MANGLE_(oski_PrintDebugVecView)
00028 #define oski_CalcVecViewInfNorm MANGLE_(oski_CalcVecViewInfNorm)
00029 #define oski_CalcVecViewInfNormDiff MANGLE_(oski_CalcVecViewInfNormDiff)
00030
00031 #define oski_InitSubVecView MANGLE_(oski_InitSubVecView)
00032
00033 #endif
00034
00048 #define STRIDE_UNIT ((oski_index_t)1)
00049
00053 typedef oski_vecstruct_t *oski_vecview_t;
00054
00059 oski_vecview_t
00060 oski_CreateVecView (oski_value_t * x, oski_index_t length, oski_index_t inc);
00061
00067 oski_vecview_t
00068 oski_CreateMultiVecView (oski_value_t * X,
00069 oski_index_t length, oski_index_t num_vecs,
00070 oski_storage_t orient, oski_index_t stride);
00071
00076 int oski_DestroyVecView (oski_vecview_t x);
00077
00082 oski_vecview_t oski_CopyVecView (const oski_vecview_t x);
00089 void oski_PrintDebugVecView (const oski_vecview_t x, const char *val_fmt);
00090
00095 double oski_CalcVecViewInfNorm (const oski_vecview_t x, oski_index_t j);
00096
00100 double oski_CalcVecViewInfNormDiff (const oski_vecview_t x0, oski_index_t j0,
00101 const oski_vecview_t x1, oski_index_t j1);
00102
00107 int oski_InitSubVecView (const oski_vecview_t x,
00108 oski_index_t i0, oski_index_t j0, oski_index_t R,
00109 oski_index_t C, oski_vecstruct_t * y);
00110
00119 extern const oski_vecview_t SYMBOLIC_VEC;
00120
00122 extern const oski_vecview_t SYMBOLIC_MULTIVEC;
00125 #endif
00126
00127 #if defined(OSKI_UNBIND)
00128 # include <oski/vector.h>
00129 # undef INC_OSKI_VECVIEW_H
00130 # undef oski_vecview_t
00131 # undef SYMBOLIC_VEC
00132 # undef SYMBOLIC_MULTIVEC
00133 # undef oski_CreateVecView
00134 # undef oski_CreateMultiVecView
00135 # undef oski_DestroyVecView
00136 # undef oski_CopyVecView
00137 # undef oski_PrintDebugVecView
00138 # undef oski_CalcVecViewInfNorm
00139 # undef oski_CalcVecViewInfNormDiff
00140 # undef oski_InitSubVecView
00141 # undef STRIDE_UNIT
00142 #endif
00143
00144