00001
00007 #if !defined(INC_OSKI_HEUR_ESTFILL_H)
00008
00009 #define INC_OSKI_HEUR_ESTFILL_H
00010
00011 #include <oski/common.h>
00012 #include <oski/mangle.h>
00013 #include <oski/matrix.h>
00014 #include <oski/CSR/format.h>
00015 #include <oski/CSC/format.h>
00016
00017 #if defined(DO_NAME_MANGLING)
00018
00020 #define oski_EstimateFillBCSR MANGLE_(oski_EstimateFillBCSR)
00021 #define oski_DestroyBCSRFillProfile MANGLE_(oski_DestroyBCSRFillProfile)
00022
00023 #endif
00024
00026 typedef struct
00027 {
00028 size_t max_r;
00029 size_t max_c;
00030 double *ratio;
00031 }
00032 oski_fillprofile_BCSR_t;
00033
00035 #define PROF_FILLBCSR_GET( P, r, c ) (P)->ratio[(r-1)*(P)->max_c + (c-1)]
00036
00038 #define PROF_FILLBCSR_SET( P, r, c, rho ) \
00039 (P)->ratio[(r-1)*(P)->max_c + (c-1)] = (rho)
00040
00045 oski_fillprofile_BCSR_t *oski_EstimateFillBCSR (const oski_matspecific_t *
00046 mat,
00047 const oski_matcommon_t *
00048 props, size_t max_r,
00049 size_t max_c,
00050 double prob_examine);
00051
00055 void oski_DestroyBCSRFillProfile (oski_fillprofile_BCSR_t * fill);
00056
00057 #endif
00058
00059