00001
00002 #ifndef UTILNUM_H
00003 #define UTILNUM_H
00004
00005 int asta2(float *img, int nx, int ny, int ri, double *abaloc, int *klploc);
00006 int ifix(float a);
00007
00008
00009
00010
00011
00012 #define integer int
00013 #define frand() ((float) rand() / (RAND_MAX+1.0))
00014
00015
00016
00017 #define max(a,b) a > b ? a : b
00018 #define min(a,b) a < b ? a : b
00019
00020
00021 extern float **matrix(int m, int n);
00022 extern float **submatrix(float **A, int m, int n, int newm, int newn);
00023 extern void free_matrix(float **A);
00024 extern void fill_rand(float **A, int m, int n);
00025 extern void print_matrix(float **A, int m, int n);
00026 extern void transpose_matrix(float **A, int m, int n);
00027 extern void column_orient(float **A, int m, int n, float ** B);
00028 extern void row_sum(float **A, int m, int n, float *e);
00029 extern void copy_matrix(float **A, float **B, int m, int n);
00030
00031 extern float *myvector(int n);
00032 extern float *subvector(float *x, int n, int newn);
00033 extern void free_vector(float * x);
00034 extern void print_vector(float *x, int n);
00035 extern void fill_ones(float *x, int n);
00036 extern float sum_vector(float *x, int n);
00037 extern void copy_vector(float *x, float *y, int n);
00038 extern void fillveczeros(float *x, int n);
00039 extern float norm(float *x, int n);
00040 extern void alphaxpy(float alpha, float *x, float *y, int n);
00041
00042 extern void matvec_mult(float ** A, float *x, int m, int n, float *b);
00043 extern void matvec_multT(float **A, float *x, int m, int n, float *b);
00044 extern void get_col(float ** A, int m, int k, float * ak);
00045 extern void get_row(float ** A, int n, int k, float * ak);
00046 extern void put_col(float ** A, int m, float * v, int k);
00047
00048
00049
00050 extern void svd(float **A, int m, int n, float **U, float *x, float **V);
00051 extern void tsvd(float **U, float *s, float **V, float *b, int m, int n, float omega, float *x, float *tol);
00052 extern void gcv_tsvd(float *s, float *bhat, int m, int n, float omega, float * tol);
00053 extern void tikhonov(float **U, float *s, float **V, float *b, int m, int n, float omega, float *x, float * alpha);
00054 extern float GCVmin_Tik(float *s, float *bhat, int m, int n, int MaxIts, float omega);
00055 extern float GCVfun_Tik(float alpha, float *s, float * bhat, int m, int n, float omega);
00056 extern void generate_noise(double *E, int m, int n);
00057
00058
00059 #endif // UTILNUM_H