Initial snark14m import
[snark14.git] / src / snark / quad.h
1  /* 
2  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3  *                                                                           *
4  *                              S N A R K   1 4                              *
5  *                                                                           *
6  *                     A PICTURE RECONSTRUCTION PROGRAM                      *
7  *                                                                           *
8  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9
10  quad.h,v 1.7 2009/09/26 14:54:43 jklukowska Exp
11 */
12
13 #ifndef XALG8_H
14 #define XALG8_H      
15
16 #include "alg.h"
17
18 ///      common /quad/ aopt,bopt,copt,dopt,eopt,fopt,gopt,hopt,popt,
19 ///     1 l,bw1,bw2,bw3,bbcon,t,cw1,cw2,cw3,cbcon,sa,sb,sc,xbar,error,
20 ///     2 iterx,period,z,eta,del,order
21 ///      integer aopt,bopt,copt,dopt,eopt,fopt,gopt,hopt,popt,l,bbcon,
22 ///     1 t,cbcon,iterx,period,del,order
23 ///      real bw1,bw2,bw3,cw1,cw2,cw3,sa,sb,sc,xbar,error,z,eta
24
25 /*
26 class quad_class
27 {
28 public:
29   INTEGER aopt,bopt,copt,dopt,eopt,fopt,gopt,hopt,popt,l,bbcon;
30   INTEGER t,cbcon,iterx,period;
31   REAL* del;
32   INTEGER* order;
33
34   REAL bw1,bw2,bw3,cw1,cw2,cw3,sa,sb,sc,xbar,error_1,z,eta;
35 };
36 */
37
38 class quad_class: public alg_class
39 {
40 private:
41   //quad_class Quad;
42
43   INTEGER aopt,bopt,copt,dopt,eopt,fopt,gopt,hopt,popt,l,bbcon;
44   INTEGER t,cbcon,iterx,period;
45   REAL* del;
46   INTEGER* order;
47
48
49   REAL* cg_;
50   REAL* g_;
51   REAL* v_;
52   REAL* w_;
53   REAL* r_;
54   REAL* f_;
55   REAL* fb_;
56   REAL* s_;
57   REAL* d_; 
58   REAL* m;
59   REAL* n;                //wei,3/2005
60         
61   REAL bw1,bw2,bw3,cw1,cw2,cw3,sa,sb,sc,xbar,error_1,z,eta;
62
63   void deltac(
64     REAL* r,
65     REAL* g,
66     REAL* v,
67     REAL* cg,
68     REAL* w,
69     //REAL delta,
70     //REAL gma,
71     REAL* delta,   //corr. hstau
72     REAL* gma,     //corr. hstau
73     INTEGER* list,
74     REAL* weight,
75     BOOLEAN* alg,
76     REAL* s
77   );
78
79   void deltad(
80     REAL* r,
81     REAL* g,
82     REAL* v,
83     REAL* cg,
84     REAL* d,
85     //REAL delta, 
86     //REAL gma,
87     REAL* delta,   //corr. hstau
88     REAL* gma,     //corr. hstau
89     INTEGER* list,
90     REAL* weight,
91     BOOLEAN *alg
92   );
93
94   void eigval(
95     REAL* y,
96     BOOLEAN nomin,
97     REAL* d,
98     INTEGER* list,
99     REAL* weight,
100     REAL tol,
101     REAL* estmin,  //corr.hstau
102     REAL* lambda,  //corr.hstau
103     //REAL estmin,
104     //REAL lambda,
105     REAL* s
106   );
107
108   void matrix(REAL* y, REAL* x, REAL* d, INTEGER* list, REAL* weight, REAL* s);
109   void mtamx(REAL* x, REAL* y, INTEGER* list, REAL* weight);
110   void costfn(REAL* recon, REAL* r, REAL* g, REAL* cg, REAL* w, INTEGER* list, REAL* weight, REAL* f);
111   void resedu(REAL* x, REAL* r, REAL* w, REAL* d, INTEGER* list, REAL* weight, REAL* f, REAL* s);
112   void adsmos(REAL* x, INTEGER m, REAL w1, REAL w2, REAL w3, INTEGER bcon);
113   void badsmos(REAL* x, INTEGER m, REAL w1, REAL w2, INTEGER bcon);  // blob version of adsmos
114   void mtamxp(REAL* x, REAL* y, INTEGER* list, REAL* weight);
115   void semi(REAL* delta, REAL* gma, BOOLEAN* alg);
116   void prsemi(REAL estmin, REAL lambda, BOOLEAN* alg, REAL* delta);
117   void deset(REAL* d, INTEGER* list, REAL* weight, BOOLEAN* alg);
118   void nxtpct(REAL* x, REAL* cg, REAL delta);
119   REAL uerror(INTEGER np, INTEGER nr, REAL pd, BOOLEAN* alg);
120   void sset(REAL* s, INTEGER* list, REAL* weight, BOOLEAN* alg);
121   void seset(REAL* s, INTEGER* list, REAL* weight, BOOLEAN* alg);
122   void dset(REAL* d, INTEGER* list, REAL* weight, BOOLEAN* alg);
123   void back(REAL* x, INTEGER* list, REAL* weight);
124   void blurck(REAL b1, REAL b2, REAL b3, INTEGER bcon, INTEGER npow, BOOLEAN* alg1);
125   void nextr(REAL* r, REAL* v, REAL delta, INTEGER area);
126   void prpict(INTEGER n, REAL* x, INTEGER it, const CHAR* l, const CHAR* m);
127   void bprpict(INTEGER M, INTEGER H, REAL* x, INTEGER it, const CHAR* l, const CHAR* m); // blob version of prpict
128
129 public:
130   BOOLEAN Run(REAL* recon, INTEGER* list, REAL* weight, INTEGER iter);
131   INTEGER Init();
132   INTEGER Reset();
133 };
134
135 #endif