home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / mesch12a.zip / sparse2.h < prev    next >
C/C++ Source or Header  |  1994-01-13  |  3KB  |  96 lines

  1.  
  2. /**************************************************************************
  3. **
  4. ** Copyright (C) 1993 David E. Steward & Zbigniew Leyk, all rights reserved.
  5. **
  6. **                 Meschach Library
  7. ** 
  8. ** This Meschach Library is provided "as is" without any express 
  9. ** or implied warranty of any kind with respect to this software. 
  10. ** In particular the authors shall not be liable for any direct, 
  11. ** indirect, special, incidental or consequential damages arising 
  12. ** in any way from use of the software.
  13. ** 
  14. ** Everyone is granted permission to copy, modify and redistribute this
  15. ** Meschach Library, provided:
  16. **  1.  All copies contain this copyright notice.
  17. **  2.  All modified copies shall carry a notice stating who
  18. **      made the last modification and the date of such modification.
  19. **  3.  No charge is made for this software or works derived from it.  
  20. **      This clause shall not be construed as constraining other software
  21. **      distributed on the same medium as this software, nor is a
  22. **      distribution fee considered a charge.
  23. **
  24. ***************************************************************************/
  25.  
  26.  
  27. /* Sparse matrix factorise/solve header */
  28. /* RCS id: $Id: sparse2.h,v 1.4 1994/01/13 05:33:46 des Exp $ */
  29.  
  30.  
  31.  
  32. #ifndef SPARSE2H
  33.  
  34. #define SPARSE2H
  35.  
  36. #include "sparse.h"
  37.  
  38.  
  39. #ifdef ANSI_C
  40. SPMAT    *spCHfactor(SPMAT *), *spICHfactor(SPMAT *), *spCHsymb(SPMAT *);
  41. VEC    *spCHsolve(SPMAT *,VEC *,VEC *);
  42.  
  43. SPMAT    *spLUfactor(SPMAT *,PERM *,double);
  44. SPMAT    *spILUfactor(SPMAT *,double);
  45. VEC    *spLUsolve(SPMAT *,PERM *,VEC *,VEC *),
  46.     *spLUTsolve(SPMAT *,PERM *,VEC *,VEC *);
  47.  
  48. SPMAT    *spBKPfactor(SPMAT *, PERM *, PERM *, double);
  49. VEC    *spBKPsolve(SPMAT *, PERM *, PERM *, VEC *, VEC *);
  50.  
  51. VEC    *pccg(VEC *(*A)(),void *A_par,VEC *(*M_inv)(),void *M_par,VEC *b,
  52.                         double tol,VEC *x);
  53. VEC    *sp_pccg(SPMAT *,SPMAT *,VEC *,double,VEC *);
  54. VEC    *cgs(VEC *(*A)(),void *A_par,VEC *b,VEC *r0,double tol,VEC *x);
  55. VEC    *sp_cgs(SPMAT *,VEC *,VEC *,double,VEC *);
  56. VEC    *lsqr(VEC *(*A)(),VEC *(*AT)(),void *A_par,VEC *b,double tol,VEC *x);
  57. VEC    *sp_lsqr(SPMAT *,VEC *,double,VEC *);
  58. int    cg_set_maxiter(int);
  59.  
  60. void    lanczos(VEC *(*A)(),void *A_par,int m,VEC *x0,VEC *a,VEC *b,
  61.                         Real *beta_m1,MAT *Q);
  62. void    sp_lanczos(SPMAT *,int,VEC *,VEC *,VEC *,Real *,MAT *);
  63. VEC    *lanczos2(VEC *(*A)(),void *A_par,int m,VEC *x0,VEC *evals,
  64.                         VEC *err_est);
  65. VEC    *sp_lanczos2(SPMAT *,int,VEC *,VEC *,VEC *);
  66. extern  void    scan_to(SPMAT *,IVEC *,IVEC *,IVEC *,int);
  67. extern  row_elt  *chase_col(SPMAT *,int,int *,int *,int);
  68. extern  row_elt  *chase_past(SPMAT *,int,int *,int *,int);
  69. extern  row_elt  *bump_col(SPMAT *,int,int *,int *);
  70.  
  71. #else
  72. extern SPMAT    *spCHfactor(), *spICHfactor(), *spCHsymb();
  73. extern VEC    *spCHsolve();
  74.  
  75. extern SPMAT    *spLUfactor();
  76. extern SPMAT    *spILUfactor();
  77. extern VEC    *spLUsolve(), *spLUTsolve();
  78.  
  79. extern SPMAT    *spBKPfactor();
  80. extern VEC    *spBKPsolve();
  81.  
  82. extern VEC    *pccg(), *sp_pccg(), *cgs(), *sp_cgs(), *lsqr(), *sp_lsqr();
  83. extern int    cg_set_maxiter();
  84.  
  85. void    lanczos(), sp_lanczos();
  86. VEC    *lanczos2(), *sp_lanczos2();
  87. extern  void    scan_to();
  88. extern  row_elt  *chase_col();
  89. extern  row_elt  *chase_past();
  90. extern  row_elt  *bump_col();
  91.  
  92. #endif
  93.  
  94.  
  95. #endif
  96.