void minus2D(double **a, double **b, double **c, int nrows, int ncols) { int x ; for (x=0; x < nrows; ++x) { vvm(a[x], b[x], c[x], ncols) ; } }
void vcompl(double *a, double *b, int n) // a <- 1 - b { double *x ; ZALLOC(x, n, double) ; vvm(x, x, b, n) ; vsp(x, x, 1.0, n) ; copyarr(x, a, n) ; free(x) ; }
double chitest(double *a, double *p, int n) /* a is n boxes. Goodness of fit test to p */ { double *x, *b, *pp ; double y1=0.0, y2=0.0 ; int i ; ZALLOC(pp, n, double) ; if (p != NULL) copyarr(p,pp,n) ; else vclear(pp, 1.0, n) ; y1 = asum(pp,n) ; y2 = asum(a,n) ; if ( (y1==0.0) || (y2==0.0) ) { free(pp) ; return 0.0 ; } ZALLOC(x,n,double) ; ZALLOC(b,n,double) ; vst (x, pp, y2/y1, n) ; /* expected */ vsp (x, x, .0001, n) ; vvm (b, a, x, n) ; vvt (b, b, b, n) ; vvd (b, b, x, n) ; y1 = asum(b,n) ; free(x) ; free(b) ; return y1 ; }