📄 martinsutils.h
字号:
#ifndef MARTINSUTILS#define MARTINSUTILS// #include"defineOs.h"#define LINUX_OS//#define DEBUG#define A(i, j, m) A[j * m + i]#define B(i, j, m) B[j * m + i]#define X(i, j, m) X[j * m + i]#ifdef MAC_OS#include<veclib/cblas.h>#include<veclib/clapack.h>#define blasCopy(x, y, n) cblas_dcopy(n, x, 1, y, 1)#define xDoty(x, y, n) cblas_ddot(n, x, 1, y, 1);#define ATimesx(A, x, y, m, n) cblas_dgemv(CblasColMajor, CblasNoTrans, m, n, 1, A, m, x, 1, 0, y, 1);#define ATimesB(A, B, C, m, k, n) cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, m, n, k, 1, A, m, B, k, 0, C, m)#define solve(A, B, m, n, p, info) dgesv_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_doublereal*)A, (__CLPK_integer*)&m, (__CLPK_integer*)p, (__CLPK_doublereal*)B, (__CLPK_integer*)&m, (__CLPK_integer*)info);#endif#ifdef LINUX_OS#include<acml.h>#define __CLPK_doublereal double#define __CLPK_integer int#define blasCopy(x, y, n) dcopy(n, x, 1, y, 1)#define xDoty(x, y, n) ddot(n, x, 1, y, 1)#define ATimesx(A, x, y, m, n) dgemv('N', m, n, 1, A, m, x, 1, 0, y, 1)#define ATimesB(A, B, C, m, k, n) dgemm('N', 'N', m, n, k, 1, A, m, B, k, 0, C, m)#define solve(A, B, m, n, p, info) dgesv(m, n, A, m, p, B, m, info);#endifvoid lu_u(double *A, int m, int n);void luZero(double *u, int m, int n);double median(double *x, int n);void solve_ls(double *A, double *B, int m, int k, int n, int *info);void qr(__CLPK_doublereal *A, __CLPK_integer m, __CLPK_integer n, __CLPK_doublereal *R, __CLPK_integer p[]);void echelon(double *A, int m, int n);void rowOperate(double* A, int destRow, int opRow, double factor, int m, int n);void printMatrix(double* A, int m, int n, char* name);void printMatrixTranspose(double* A, int m, int n, char* name);void printMatrix(__CLPK_integer* A, int m, int n, char* name);void fprintMatrix(double* A, int m, int n, const char* fileName);int freadMatrix(double* A, int m, int n, const char* fileName);void eye(double *A, int n);void zeros(double *A, int m, int n);void ones(double *A, int m, int n);void rand(double *A, int m, int n);inline void getRow(int rowNumber, double *row, double *A, int m, int n) { for(int i = 0; i < n; i ++) row[i] = A[m * i + rowNumber];};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -