#include #define LD 100 extern double v1[LD], v2[LD]; extern double a1[LD][LD], a2[LD][LD]; extern double hlg2pi; extern double uquaf(int n, double *x, double *a, int lda); gaua(int k, double *amu, double *h, int ldh, double *x1, double *x2) { urnmvn(k,a1,LD,v1); uvadd(k,amu,v1,x1); uvsub(k,amu,v1,x2); } gau(int k, double *amu, double *h, int ldh, double *x1, double *x2) /* generates two antithetic random vectors x1 and x2 */ { dlftds(k,h,ldh,a1,LD); dlinrt(k,a1,LD,2,a1,LD); gaua(k,amu,h,ldh,x1,x2); } double gauk(int k, double *amu, double *h, int ldh, double *x) { double d; uvsub(k,x,amu,v1); return(-uquaf(k,v1,h,ldh)/2); } double gaun(int k, double *h, int ldh) { int i; double aa=0.0, bb; dlftds(k,h,ldh,a1,LD); for (i=0; i<=k-1; i++) aa=aa+log(a1[i][i]); return(-k*hlg2pi+aa); }