00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef _HT_DCOMPLEX_H_
00010 #define _HT_DCOMPLEX_H_
00011
00012 #include <string.h>
00013
00014 #ifndef _DCOMPLEX_DECLARE_HT_
00015 typedef struct DCOMPLEX {double r,i;} dcomplex;
00016 #define _DCOMPLEX_DECLARE_HT_
00017 #endif
00018
00019 dcomplex DCadd(dcomplex a, dcomplex b);
00020 dcomplex DCsub(dcomplex a, dcomplex b);
00021 dcomplex DCmul(dcomplex a, dcomplex b);
00022 dcomplex DComplex(double re, double im);
00023 dcomplex DConjg(dcomplex z);
00024 dcomplex DCdiv(dcomplex a, dcomplex b);
00025 double DCabs(dcomplex z);
00026 dcomplex DCsqrt(dcomplex z);
00027 dcomplex DRCmul(double x, dcomplex a);
00028
00029 #endif
00030
00031 #ifndef _HT_BCVSPINMETRIC_H_
00032 #define _HT_BCVSPINMETRIC_H_
00033
00034 #include <gsl/gsl_vector.h>
00035 #include <gsl/gsl_math.h>
00036 #include <gsl/gsl_matrix.h>
00037 #include <gsl/gsl_eigen.h>
00038 #include <gsl/gsl_rng.h>
00039 #include <gsl/gsl_roots.h>
00040
00041 int cos_sin_func(
00042 int N, double beta,double fmax,
00043
00044 double *costerm,double *sinterm);
00045
00046 int coef_A(
00047 int N,double *costerm,double *sinterm,double fmax,
00048
00049 double *A1, double *A2,double *A3);
00050
00051 int deriv_A(
00052 int N,double *costerm,double *sinterm,double fmax,
00053
00054 double *dA2,double *dA3);
00055
00056 int innerR(
00057 int N, double *A, double *B, double *Sn,double fmin,double fmax,
00058
00059 double *result);
00060
00061 int innerC(
00062 int N, dcomplex *A, dcomplex *B, double *Sn,double fmin,double fmax,
00063
00064 double *result);
00065
00066 int orthonormalized_A(
00067 int N,double *A1, double *A2,double *A3,double *Sn,
00068 double fmin,double fmax,
00069
00070 double *tA2,double *tA3,
00071 double *hA1,double *hA2, double *hA3,
00072 double *normtA2,double *normtA3);
00073
00074 int dA2dbeta(
00075 int N,double *Sn,double fmin,double fmax, double *hA1,
00076 double *tA2,double *dA2,double normtA2,
00077
00078 double *dhA2);
00079
00080 int dA3dbeta(
00081 int N,double *Sn,double fmin,double fmax,
00082 double *hA1,double *hA2,double *dhA2,
00083 double *A3,double *tA3,double *dA3,double normtA3,
00084
00085 double *dhA3);
00086
00087 int calc_function_G(
00088 int N,double *Sn,double fmin,double fmax,
00089 double *A1,double *A2,double *A3,
00090 double *dhA2db,double *dhA3db,
00091
00092 double funcG[7][7][4][4]);
00093
00094 int functionG(
00095 int N,double beta,double *Sn,double fmin,double fmax,
00096
00097 double funcG[7][7][4][4]);
00098
00099 int three_metric(
00100 double funcG[7][7][4][4],double *alpha,
00101
00102 double metric3[4][4]);
00103
00104 int generate_fit_points(double MinMatch, double funcG[7][7][4][4],
00105 int ndata,
00106 double **fit_point);
00107
00108 int generate_metric_data(double MinMatch,
00109 double funcG[7][7][4][4]);
00110
00111 void model_func(double xx,double afunc[]);
00112
00113 int metric_by_fit(
00114 double MinMatch, int ndata,
00115
00116 double metric_fit[4][4]);
00117
00118 int rescale_metric( double MinMatch, int ndata, double metric1[4][4],
00119 double metric[4][4]);
00120
00121 int BCVspin_metric(
00122 double MinMatch, int N,double *Sn,double fmin,double fmax,double beta,
00123
00124 double **bcv2metric,int dbg);
00125
00126 double determinant3(gsl_matrix *matrix);
00127
00128 int matrix3_determinant_plus(gsl_matrix *matrix,gsl_vector *eig);
00129
00130 void svdfit_d_test(double x[], double y[], double sig[], int ndata, gsl_vector *a, int ma,
00131 gsl_matrix *u, gsl_matrix *v, gsl_vector *w, double *chisq,
00132 void (*funcs)(double, double []));
00133
00134 #endif
00135