matpow.h

Go to the documentation of this file.
00001 
00007 #if !defined(INC_OSKI_MATPOW_H) && !defined(OSKI_UNBIND)
00008 
00009 #define INC_OSKI_MATPOW_H
00010 
00011 #include <oski/matmult.h>
00012 
00013 #if defined(DO_NAME_MANGLING)
00014 
00016 #define oski_MatPowMult_funcpt  MANGLE_(oski_MatPowMult_funcpt)
00017 #define oski_MatReprPowMult_funcpt \
00018     MANGLE_(oski_MatReprPowMult_funcpt)
00019 
00020 #define oski_CheckArgsMatPowMult MANGLE_(oski_CheckArgsMatPowMult)
00021 #define oski_MatPowMult         MANGLE_(oski_MatPowMult)
00022 
00023 #define oski_traceargs_MatPowMult_t \
00024     MANGLE_(oski_traceargs_MatPowMult_t)
00025 #define oski_MakeArglistMatPowMult \
00026     MANGLE_(oski_MakeArglistMatPowMult)
00027 
00028 #endif
00029 
00036 int oski_MatPowMult (const oski_matrix_t A_tunable,
00037              oski_matop_t opA, int power,
00038              oski_value_t alpha, const oski_vecview_t x_view,
00039              oski_value_t beta, oski_vecview_t y_view,
00040              oski_vecview_t T_view);
00041 
00045 int oski_CheckArgsMatPowMult (const oski_matrix_t A_tunable,
00046                   oski_matop_t opA, int power,
00047                   oski_value_t alpha, const oski_vecview_t x_view,
00048                   oski_value_t beta, oski_vecview_t y_view,
00049                   oski_vecview_t T_view, const char *caller);
00050 
00054 typedef int (*oski_MatPowMult_funcpt) (const oski_matrix_t A_tunable,
00055                        oski_matop_t opA, int power,
00056                        oski_value_t alpha,
00057                        const oski_vecview_t x_view,
00058                        oski_value_t beta,
00059                        oski_vecview_t y_view,
00060                        oski_vecview_t T_view);
00061 
00066 typedef int (*oski_MatReprPowMult_funcpt) (const void *A,
00067                        const oski_matcommon_t * props,
00068                        oski_matop_t opA, int power,
00069                        oski_value_t alpha,
00070                        const oski_vecview_t x_view,
00071                        oski_value_t beta,
00072                        oski_vecview_t y_view,
00073                        oski_vecview_t T_view);
00074 
00082 typedef struct
00083 {
00085 
00086   oski_matop_t opA;
00087   int power;
00088   oski_index_t num_vecs;
00089   oski_value_t alpha;
00090   oski_storage_t x_orient;
00091   oski_value_t beta;
00092   oski_storage_t y_orient;
00093   oski_storage_t t_orient;
00095 }
00096 oski_traceargs_MatPowMult_t;
00103 void
00104 oski_MakeArglistMatPowMult (oski_matop_t op, int power,
00105                 oski_value_t alpha, const oski_vecview_t x_view,
00106                 oski_value_t beta, const oski_vecview_t y_view,
00107                 const oski_vecview_t T_view,
00108                 oski_traceargs_MatPowMult_t * args);
00109 
00111 #define GET_XFLOP_MatPowMult( args ) \
00112     (2.0 * ((const oski_traceargs_MatPowMult_t *)(args))->num_vecs \
00113          * ((const oski_traceargs_MatPowMult_t *)(args))->power)
00114 
00115 #endif /* !defined(INC_OSKI_MATPOW_H) */
00116 
00117 #if defined(OSKI_UNBIND)
00118 #  include <oski/matmult.h>
00119 #  undef INC_OSKI_MATPOW_H
00120 #  undef GET_XFLOP_MatPowMult
00121 #  undef oski_MatPowMult_funcpt
00122 #  undef oski_MatReprPowMult_funcpt
00123 #  undef oski_CheckArgsMatPowMult
00124 #  undef oski_MatPowMult
00125 #  undef oski_traceargs_MatPowMult_t
00126 #  undef oski_MakeArglistMatPowMult
00127 #endif
00128 
00129 
00130 /* eof */

Generated on Wed Sep 19 16:41:18 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6