Path: blob/devel/elmergrid/src/metis-5.1.0/GKlib/gk_proto.h
3206 views
/*!1\file gk_proto.h2\brief This file contains function prototypes34\date Started 3/27/20075\author George6\version\verbatim $Id: gk_proto.h 12591 2012-09-01 19:03:15Z karypis $ \endverbatim7*/89#ifndef _GK_PROTO_H_10#define _GK_PROTO_H_1112#ifdef __cplusplus13extern "C" {14#endif1516/*-------------------------------------------------------------17* blas.c18*-------------------------------------------------------------*/19GK_MKBLAS_PROTO(gk_c, char, int)20GK_MKBLAS_PROTO(gk_i, int, int)21GK_MKBLAS_PROTO(gk_i32, int32_t, int32_t)22GK_MKBLAS_PROTO(gk_i64, int64_t, int64_t)23GK_MKBLAS_PROTO(gk_z, ssize_t, ssize_t)24GK_MKBLAS_PROTO(gk_f, float, float)25GK_MKBLAS_PROTO(gk_d, double, double)26GK_MKBLAS_PROTO(gk_idx, gk_idx_t, gk_idx_t)2728293031/*-------------------------------------------------------------32* io.c33*-------------------------------------------------------------*/34FILE *gk_fopen(char *, char *, const char *);35void gk_fclose(FILE *);36gk_idx_t gk_getline(char **lineptr, size_t *n, FILE *stream);37char **gk_readfile(char *fname, gk_idx_t *r_nlines);38int32_t *gk_i32readfile(char *fname, gk_idx_t *r_nlines);39int64_t *gk_i64readfile(char *fname, gk_idx_t *r_nlines);40int32_t *gk_i32readfilebin(char *fname, ssize_t *r_nelmnts);41int64_t *gk_i64readfilebin(char *fname, ssize_t *r_nelmnts);42float *gk_freadfilebin(char *fname, ssize_t *r_nelmnts);43size_t gk_fwritefilebin(char *fname, size_t n, float *a);44double *gk_dreadfilebin(char *fname, ssize_t *r_nelmnts);4546474849/*-------------------------------------------------------------50* fs.c51*-------------------------------------------------------------*/52int gk_fexists(char *);53int gk_dexists(char *);54intmax_t gk_getfsize(char *);55void gk_getfilestats(char *fname, size_t *r_nlines, size_t *r_ntokens,56size_t *r_max_nlntokens, size_t *r_nbytes);57char *gk_getbasename(char *path);58char *gk_getextname(char *path);59char *gk_getfilename(char *path);60char *gk_getpathname(char *path);61int gk_mkpath(char *);62int gk_rmpath(char *);63646566/*-------------------------------------------------------------67* memory.c68*-------------------------------------------------------------*/69GK_MKALLOC_PROTO(gk_c, char)70GK_MKALLOC_PROTO(gk_i, int)71GK_MKALLOC_PROTO(gk_i32, int32_t)72GK_MKALLOC_PROTO(gk_i64, int64_t)73GK_MKALLOC_PROTO(gk_z, ssize_t)74GK_MKALLOC_PROTO(gk_f, float)75GK_MKALLOC_PROTO(gk_d, double)76GK_MKALLOC_PROTO(gk_idx, gk_idx_t)7778GK_MKALLOC_PROTO(gk_ckv, gk_ckv_t)79GK_MKALLOC_PROTO(gk_ikv, gk_ikv_t)80GK_MKALLOC_PROTO(gk_i32kv, gk_i32kv_t)81GK_MKALLOC_PROTO(gk_i64kv, gk_i64kv_t)82GK_MKALLOC_PROTO(gk_zkv, gk_zkv_t)83GK_MKALLOC_PROTO(gk_fkv, gk_fkv_t)84GK_MKALLOC_PROTO(gk_dkv, gk_dkv_t)85GK_MKALLOC_PROTO(gk_skv, gk_skv_t)86GK_MKALLOC_PROTO(gk_idxkv, gk_idxkv_t)8788void gk_AllocMatrix(void ***, size_t, size_t , size_t);89void gk_FreeMatrix(void ***, size_t, size_t);90int gk_malloc_init();91void gk_malloc_cleanup(int showstats);92void *gk_malloc(size_t nbytes, char *msg);93void *gk_realloc(void *oldptr, size_t nbytes, char *msg);94void gk_free(void **ptr1,...);95size_t gk_GetCurMemoryUsed();96size_t gk_GetMaxMemoryUsed();979899100/*-------------------------------------------------------------101* seq.c102*-------------------------------------------------------------*/103gk_seq_t *gk_seq_ReadGKMODPSSM(char *file_name);104gk_i2cc2i_t *gk_i2cc2i_create_common(char *alphabet);105void gk_seq_init(gk_seq_t *seq);106107108109110/*-------------------------------------------------------------111* pdb.c112*-------------------------------------------------------------*/113char gk_threetoone(char *res);114void gk_freepdbf(pdbf *p);115pdbf *gk_readpdbfile(char *fname);116void gk_writefullatom(pdbf *p, char *fname);117void gk_writebackbone(pdbf *p, char *fname);118void gk_writealphacarbons(pdbf *p, char *fname);119void gk_showcorruption(pdbf *p);120121122/*-------------------------------------------------------------123* error.c124*-------------------------------------------------------------*/125void gk_set_exit_on_error(int value);126void errexit(char *,...);127void gk_errexit(int signum, char *,...);128int gk_sigtrap();129int gk_siguntrap();130void gk_sigthrow(int signum);131void gk_SetSignalHandlers();132void gk_UnsetSignalHandlers();133void gk_NonLocalExit_Handler(int signum);134char *gk_strerror(int errnum);135void PrintBackTrace();136137138/*-------------------------------------------------------------139* util.c140*-------------------------------------------------------------*/141void gk_RandomPermute(size_t, int *, int);142void gk_array2csr(size_t n, size_t range, int *array, int *ptr, int *ind);143int gk_log2(int);144int gk_ispow2(int);145float gk_flog2(float);146147148/*-------------------------------------------------------------149* time.c150*-------------------------------------------------------------*/151gk_wclock_t gk_WClockSeconds(void);152double gk_CPUSeconds(void);153154/*-------------------------------------------------------------155* string.c156*-------------------------------------------------------------*/157char *gk_strchr_replace(char *str, char *fromlist, char *tolist);158int gk_strstr_replace(char *str, char *pattern, char *replacement, char *options, char **new_str);159char *gk_strtprune(char *, char *);160char *gk_strhprune(char *, char *);161char *gk_strtoupper(char *);162char *gk_strtolower(char *);163char *gk_strdup(char *orgstr);164int gk_strcasecmp(char *s1, char *s2);165int gk_strrcmp(char *s1, char *s2);166char *gk_time2str(time_t time);167time_t gk_str2time(char *str);168int gk_GetStringID(gk_StringMap_t *strmap, char *key);169170171172/*-------------------------------------------------------------173* sort.c174*-------------------------------------------------------------*/175void gk_csorti(size_t, char *);176void gk_csortd(size_t, char *);177void gk_isorti(size_t, int *);178void gk_isortd(size_t, int *);179void gk_fsorti(size_t, float *);180void gk_fsortd(size_t, float *);181void gk_dsorti(size_t, double *);182void gk_dsortd(size_t, double *);183void gk_idxsorti(size_t, gk_idx_t *);184void gk_idxsortd(size_t, gk_idx_t *);185void gk_ckvsorti(size_t, gk_ckv_t *);186void gk_ckvsortd(size_t, gk_ckv_t *);187void gk_ikvsorti(size_t, gk_ikv_t *);188void gk_ikvsortd(size_t, gk_ikv_t *);189void gk_i32kvsorti(size_t, gk_i32kv_t *);190void gk_i32kvsortd(size_t, gk_i32kv_t *);191void gk_i64kvsorti(size_t, gk_i64kv_t *);192void gk_i64kvsortd(size_t, gk_i64kv_t *);193void gk_zkvsorti(size_t, gk_zkv_t *);194void gk_zkvsortd(size_t, gk_zkv_t *);195void gk_fkvsorti(size_t, gk_fkv_t *);196void gk_fkvsortd(size_t, gk_fkv_t *);197void gk_dkvsorti(size_t, gk_dkv_t *);198void gk_dkvsortd(size_t, gk_dkv_t *);199void gk_skvsorti(size_t, gk_skv_t *);200void gk_skvsortd(size_t, gk_skv_t *);201void gk_idxkvsorti(size_t, gk_idxkv_t *);202void gk_idxkvsortd(size_t, gk_idxkv_t *);203204205/*-------------------------------------------------------------206* Selection routines207*-------------------------------------------------------------*/208int gk_dfkvkselect(size_t, int, gk_fkv_t *);209int gk_ifkvkselect(size_t, int, gk_fkv_t *);210211212/*-------------------------------------------------------------213* Priority queue214*-------------------------------------------------------------*/215GK_MKPQUEUE_PROTO(gk_ipq, gk_ipq_t, int, gk_idx_t)216GK_MKPQUEUE_PROTO(gk_i32pq, gk_i32pq_t, int32_t, gk_idx_t)217GK_MKPQUEUE_PROTO(gk_i64pq, gk_i64pq_t, int64_t, gk_idx_t)218GK_MKPQUEUE_PROTO(gk_fpq, gk_fpq_t, float, gk_idx_t)219GK_MKPQUEUE_PROTO(gk_dpq, gk_dpq_t, double, gk_idx_t)220GK_MKPQUEUE_PROTO(gk_idxpq, gk_idxpq_t, gk_idx_t, gk_idx_t)221222223/*-------------------------------------------------------------224* HTable routines225*-------------------------------------------------------------*/226gk_HTable_t *HTable_Create(int nelements);227void HTable_Reset(gk_HTable_t *htable);228void HTable_Resize(gk_HTable_t *htable, int nelements);229void HTable_Insert(gk_HTable_t *htable, int key, int val);230void HTable_Delete(gk_HTable_t *htable, int key);231int HTable_Search(gk_HTable_t *htable, int key);232int HTable_GetNext(gk_HTable_t *htable, int key, int *val, int type);233int HTable_SearchAndDelete(gk_HTable_t *htable, int key);234void HTable_Destroy(gk_HTable_t *htable);235int HTable_HFunction(int nelements, int key);236237238/*-------------------------------------------------------------239* Tokenizer routines240*-------------------------------------------------------------*/241void gk_strtokenize(char *line, char *delim, gk_Tokens_t *tokens);242void gk_freetokenslist(gk_Tokens_t *tokens);243244/*-------------------------------------------------------------245* Encoder/Decoder246*-------------------------------------------------------------*/247void encodeblock(unsigned char *in, unsigned char *out);248void decodeblock(unsigned char *in, unsigned char *out);249void GKEncodeBase64(int nbytes, unsigned char *inbuffer, unsigned char *outbuffer);250void GKDecodeBase64(int nbytes, unsigned char *inbuffer, unsigned char *outbuffer);251252253/*-------------------------------------------------------------254* random.c255*-------------------------------------------------------------*/256GK_MKRANDOM_PROTO(gk_c, size_t, char)257GK_MKRANDOM_PROTO(gk_i, size_t, int)258GK_MKRANDOM_PROTO(gk_f, size_t, float)259GK_MKRANDOM_PROTO(gk_d, size_t, double)260GK_MKRANDOM_PROTO(gk_idx, size_t, gk_idx_t)261GK_MKRANDOM_PROTO(gk_z, size_t, ssize_t)262void gk_randinit(uint64_t);263uint64_t gk_randint64(void);264uint32_t gk_randint32(void);265266267/*-------------------------------------------------------------268* OpenMP fake functions269*-------------------------------------------------------------*/270#if !defined(__OPENMP__)271void omp_set_num_threads(int num_threads);272int omp_get_num_threads(void);273int omp_get_max_threads(void);274int omp_get_thread_num(void);275int omp_get_num_procs(void);276int omp_in_parallel(void);277void omp_set_dynamic(int num_threads);278int omp_get_dynamic(void);279void omp_set_nested(int nested);280int omp_get_nested(void);281#endif /* __OPENMP__ */282283284/*-------------------------------------------------------------285* CSR-related functions286*-------------------------------------------------------------*/287gk_csr_t *gk_csr_Create();288void gk_csr_Init(gk_csr_t *mat);289void gk_csr_Free(gk_csr_t **mat);290void gk_csr_FreeContents(gk_csr_t *mat);291gk_csr_t *gk_csr_Dup(gk_csr_t *mat);292gk_csr_t *gk_csr_ExtractSubmatrix(gk_csr_t *mat, int rstart, int nrows);293gk_csr_t *gk_csr_ExtractRows(gk_csr_t *mat, int nrows, int *rind);294gk_csr_t *gk_csr_ExtractPartition(gk_csr_t *mat, int *part, int pid);295gk_csr_t **gk_csr_Split(gk_csr_t *mat, int *color);296gk_csr_t *gk_csr_Read(char *filename, int format, int readvals, int numbering);297void gk_csr_Write(gk_csr_t *mat, char *filename, int format, int writevals, int numbering);298gk_csr_t *gk_csr_Prune(gk_csr_t *mat, int what, int minf, int maxf);299gk_csr_t *gk_csr_LowFilter(gk_csr_t *mat, int what, int norm, float fraction);300gk_csr_t *gk_csr_TopKPlusFilter(gk_csr_t *mat, int what, int topk, float keepval);301gk_csr_t *gk_csr_ZScoreFilter(gk_csr_t *mat, int what, float zscore);302void gk_csr_CompactColumns(gk_csr_t *mat);303void gk_csr_SortIndices(gk_csr_t *mat, int what);304void gk_csr_CreateIndex(gk_csr_t *mat, int what);305void gk_csr_Normalize(gk_csr_t *mat, int what, int norm);306void gk_csr_Scale(gk_csr_t *mat, int type);307void gk_csr_ComputeSums(gk_csr_t *mat, int what);308void gk_csr_ComputeSquaredNorms(gk_csr_t *mat, int what);309float gk_csr_ComputeSimilarity(gk_csr_t *mat, int i1, int i2, int what, int simtype);310int gk_csr_GetSimilarRows(gk_csr_t *mat, int nqterms, int *qind, float *qval,311int simtype, int nsim, float minsim, gk_fkv_t *hits, int *_imarker,312gk_fkv_t *i_cand);313314315316/* itemsets.c */317void gk_find_frequent_itemsets(int ntrans, ssize_t *tranptr, int *tranind,318int minfreq, int maxfreq, int minlen, int maxlen,319void (*process_itemset)(void *stateptr, int nitems, int *itemind,320int ntrans, int *tranind),321void *stateptr);322323324/* evaluate.c */325float ComputeAccuracy(int n, gk_fkv_t *list);326float ComputeROCn(int n, int maxN, gk_fkv_t *list);327float ComputeMedianRFP(int n, gk_fkv_t *list);328float ComputeMean (int n, float *values);329float ComputeStdDev(int n, float *values);330331332/* mcore.c */333gk_mcore_t *gk_mcoreCreate(size_t coresize);334gk_mcore_t *gk_gkmcoreCreate();335void gk_mcoreDestroy(gk_mcore_t **r_mcore, int showstats);336void gk_gkmcoreDestroy(gk_mcore_t **r_mcore, int showstats);337void *gk_mcoreMalloc(gk_mcore_t *mcore, size_t nbytes);338void gk_mcorePush(gk_mcore_t *mcore);339void gk_gkmcorePush(gk_mcore_t *mcore);340void gk_mcorePop(gk_mcore_t *mcore);341void gk_gkmcorePop(gk_mcore_t *mcore);342void gk_mcoreAdd(gk_mcore_t *mcore, int type, size_t nbytes, void *ptr);343void gk_gkmcoreAdd(gk_mcore_t *mcore, int type, size_t nbytes, void *ptr);344void gk_mcoreDel(gk_mcore_t *mcore, void *ptr);345void gk_gkmcoreDel(gk_mcore_t *mcore, void *ptr);346347/* rw.c */348int gk_rw_PageRank(gk_csr_t *mat, float lamda, float eps, int max_niter, float *pr);349350351/* graph.c */352gk_graph_t *gk_graph_Create();353void gk_graph_Init(gk_graph_t *graph);354void gk_graph_Free(gk_graph_t **graph);355void gk_graph_FreeContents(gk_graph_t *graph);356gk_graph_t *gk_graph_Read(char *filename, int format, int isfewgts,357int isfvwgts, int isfvsizes);358void gk_graph_Write(gk_graph_t *graph, char *filename, int format);359gk_graph_t *gk_graph_Dup(gk_graph_t *graph);360gk_graph_t *gk_graph_ExtractSubgraph(gk_graph_t *graph, int vstart, int nvtxs);361gk_graph_t *gk_graph_Reorder(gk_graph_t *graph, int32_t *perm, int32_t *iperm);362int gk_graph_FindComponents(gk_graph_t *graph, int32_t *cptr, int32_t *cind);363void gk_graph_ComputeBFSOrdering(gk_graph_t *graph, int v, int32_t **r_perm,364int32_t **r_iperm);365void gk_graph_ComputeBestFOrdering0(gk_graph_t *graph, int v, int type,366int32_t **r_perm, int32_t **r_iperm);367void gk_graph_ComputeBestFOrdering(gk_graph_t *graph, int v, int type,368int32_t **r_perm, int32_t **r_iperm);369void gk_graph_SingleSourceShortestPaths(gk_graph_t *graph, int v, void **r_sps);370371372373374#ifdef __cplusplus375}376#endif377378379#endif380381382383