home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / c / lpc05b.zip / MATRIX.H < prev    next >
Text File  |  1992-05-22  |  2KB  |  91 lines

  1. /*
  2. *-----------------------------------------------------------------------------
  3. *    file:    matrix.h
  4. *    desc:    matrix mathematics header file
  5. *    by:    ko shu pui, patrick
  6. *    date:    24 nov 91    v0.1b
  7. *    revi:
  8. *    ref:
  9. *       [1] Mary L.Boas, "Mathematical Methods in the Physical Sciene,"
  10. *    John Wiley & Sons, 2nd Ed., 1983. Chap 3.
  11. *
  12. *-----------------------------------------------------------------------------
  13. */
  14.  
  15. /*
  16. *-----------------------------------------------------------------------------
  17. *    internal matrix structure
  18. *-----------------------------------------------------------------------------
  19. */
  20. typedef struct {
  21.     int    row;
  22.     int    col;
  23.     }    MATHEAD;
  24.  
  25. typedef struct {
  26.     MATHEAD    head;
  27.     /*
  28.     * only the starting address of the following will be
  29.     * returned to the C programmer, like malloc() concept
  30.     */
  31.     double    *matrix;
  32.     }    MATBODY;
  33.  
  34. typedef    double    **MATRIX;
  35.  
  36. #define    Mathead(a)    ((MATHEAD *)((MATHEAD *)(a) - 1))
  37. #define MatRow(a)    (Mathead(a)->row)
  38. #define    MatCol(a)    (Mathead(a)->col)
  39.  
  40. /*
  41. *----------------------------------------------------------------------------
  42. *    mat_errors definitions
  43. *----------------------------------------------------------------------------
  44. */
  45. #define    MAT_MALLOC    1
  46. #define MAT_FNOTOPEN    2
  47. #define MAT_SINGULAR    3
  48. #define    MAT_FNOTGETMAT    4
  49.  
  50. /*
  51. *----------------------------------------------------------------------------
  52. *    matrice types
  53. *----------------------------------------------------------------------------
  54. */
  55. #define UNDEFINED    -1
  56. #define ZERO_MATRIX    0
  57. #define    UNIT_MATRIX    1
  58.  
  59. /* prototypes of matrix package */
  60.  
  61. MATRIX mat_error    ();
  62. MATRIX _mat_creat    ();
  63. MATRIX mat_creat    ();
  64. MATRIX mat_fill        ();
  65. int mat_free        ();
  66. MATRIX mat_copy        ();
  67. MATRIX mat_colcopy1    ();
  68. int fgetmat        ();
  69. MATRIX mat_dump        ();
  70. MATRIX mat_fdump    ();
  71.  
  72. MATRIX mat_add        ();
  73. MATRIX mat_sub        ();
  74. MATRIX mat_mul        ();
  75. MATRIX mat_tran        ();
  76. MATRIX mat_inv        ();
  77. MATRIX mat_inv2        ();
  78. MATRIX mat_SymToeplz    ();
  79.  
  80. MATRIX mat_lu        ();
  81. MATRIX mat_backsubs1    ();
  82. MATRIX mat_lsolve    ();
  83.  
  84. double mat_cofact    ();
  85. double mat_det        ();
  86. double mat_minor    ();
  87.  
  88. MATRIX mat_durbin       ();
  89. MATRIX mat_lsolve_durbin();
  90.  
  91.