#ifndef ULMAUX_H #define ULMAUX_H #include // for size_t, ptrdiff_t #include // for typedef bool //-- Functions for benchmarking and testing ------------------------------------ // timer double walltime(); // random fill matrix void randDGeMatrix(size_t m, size_t n, bool withNan, double *A, ptrdiff_t incRowA, ptrdiff_t incColA); // print matrix of doubles using format string fmt void printfDGeMatrix(const char * fmt, size_t m, size_t n, const double *A, ptrdiff_t incRowA, ptrdiff_t incColA); // print matrix of doubles (using a default format) void printDGeMatrix(size_t m, size_t n, const double *A, ptrdiff_t incRowA, ptrdiff_t incColA); // print matrix of size_ts void printIGeMatrix(size_t m, size_t n, const size_t *A, ptrdiff_t incRowA, ptrdiff_t incColA); // absolute value of a ptrdiff_t value inline size_t ptrdiff_abs(ptrdiff_t x) { return x>0 ? x : -x; } // random fill an array of doubles void dfill_nan(size_t bufsize, double *buf); // random fill an array of size_t values void ifill_rand(size_t bufsize, size_t *buf); //-- BLAS extensions ----------------------------------------------------------- // copy matrices void dgecopy(size_t m, size_t n, const double *A, ptrdiff_t incRowA, ptrdiff_t incColA, double *B, ptrdiff_t incRowB, ptrdiff_t incColB); // axpy for matrices void dgeaxpy(size_t m, size_t n, double alpha, const double *X, ptrdiff_t incRowX, ptrdiff_t incColX, double *Y, ptrdiff_t incRowY, ptrdiff_t incColY); // compute and return matrix (infinity) norm double dgenrm_inf(size_t m, size_t n, const double *A, ptrdiff_t incRowA, ptrdiff_t incColA); #endif // ULMAUX_H