Matrix.h


SUBMITTED BY: Laka

DATE: May 19, 2016, 7:16 a.m.

FORMAT: C++

SIZE: 3.0 kB

HITS: 980

  1. /* matrix.h : header file for matrix routines.*/
  2. #ifndef MATRIX_HEADER_IN
  3. #define MATRIX_HEADER_IN
  4. /* The basic matrix structure */
  5. #define TOL 1e-10
  6. #define VEC M[0]
  7. typedef struct
  8. { int vec;long r,c,mem,original_r,original_c;double **M,*V;} matrix;
  9. extern matrix null_mat;
  10. /* The user routines */
  11. void mtest(void);
  12. void mcopy(matrix *A,matrix *B);
  13. void sort(matrix);
  14. long rank(matrix a);
  15. matrix initmat(long rows,long cols);
  16. void freemat(matrix A);
  17. long fsafewrite(double *ptr,size_t size,long n,FILE *stream);
  18. long fsaferead(double *ptr,size_t size,long n,FILE *stream);
  19. void dumpmat(matrix M,char *filename);
  20. void readmat(matrix *M,char *filename);
  21. matrix vecmult(matrix A,matrix x,int t);
  22. void vmult(matrix *A,matrix *b,matrix *c,int t);
  23. void matmult(matrix C,matrix A,matrix B,int tA,int tB);
  24. void multi(int n,matrix C, ...);
  25. double trace(matrix *A);
  26. void mad(matrix C,matrix A,matrix B,double mA,double mB);
  27. void invert(matrix *a);
  28. void bicholeskisolve(matrix *A,matrix *B,matrix *l0,matrix *l1);
  29. double triTrInvLL(matrix *l0,matrix *l1);
  30. void tricholeski(matrix *T,matrix *l0,matrix *l1);
  31. void choleski(matrix A,matrix L,int invert,int invout);
  32. int chol(matrix A,matrix L,int invert,int invout);
  33. matrix choleskiupdate(matrix L,matrix a);
  34. void choleskir1ud(matrix L,matrix u,double alpha);
  35. void choleskisolve(matrix L,matrix z,matrix y);
  36. double dot(matrix a,matrix b);
  37. double enorm(matrix d);
  38. double matrixnorm(matrix M);
  39. double m1norm(matrix M);
  40. double condition(matrix a);
  41. void householder(matrix *u,matrix a,matrix b,long t1);
  42. void Hmult(matrix C,matrix u);
  43. void HQmult(matrix C,matrix U,int p,int t);
  44. void QT(matrix Q,matrix A,int Qfull);
  45. void InvertTriangular(matrix *R);
  46. void Rsolv(matrix *R,matrix *p,matrix *y);
  47. int QR(matrix *Q,matrix *R);
  48. void UTU(matrix *T,matrix *U);
  49. void bidiag(matrix *A,matrix *wl,matrix *ws,matrix *V);
  50. void OrthoMult(matrix *Q,matrix *A,int off,int rows,int t,int pre,int o_pre);
  51. void root(matrix *M,matrix *C,double tol);
  52. void symproduct(matrix A,matrix B,matrix C,int trace,int chol);
  53. matrix getmask(int *index,int smalln,int bign);
  54. void gettextmatrix(matrix M,char *name);
  55. void matrixintegritycheck(void);
  56. double variance(matrix a);
  57. double cov(matrix a,matrix b);
  58. double corr(matrix a,matrix b);
  59. double acf(matrix s,int lag);
  60. double absdev(matrix a);
  61. double mean(matrix a);
  62. void leastsq(matrix A,matrix p,matrix y,matrix w);
  63. long alias(matrix X,long *aliased,double tol);
  64. void notinv(matrix J,matrix K,matrix B);
  65. void printmat(matrix A,char *fmt);
  66. double pythag(double a,double b);
  67. void svd(matrix *a,matrix *w,matrix *v);
  68. void svdLS(matrix A,matrix p,matrix y,double tol);
  69. void suminvert(matrix A,matrix B,matrix U,matrix W);
  70. void specd(matrix U,matrix W);
  71. void updateLS(matrix T,matrix z,matrix x,double y,double w);
  72. void fullLS(matrix A,matrix p,matrix y,matrix w,matrix T,matrix zo,int TZout);
  73. void rtsolve(matrix T,matrix p,matrix z);
  74. long pinv(matrix *A,double trunc);
  75. matrix svdroot(matrix A,double reltol);
  76. #endif

comments powered by Disqus