double f(gsl_vector * x) {
#ifndef NOCACHE
	return f_cached(x, f_read_from_stdin);
#else
	return f_read_from_stdin(x);
#endif
}
예제 #2
0
int main(int argc, char **argv){
	FILE *in;
	int i;
	int j;
	int dims[2];
	float **imat;
	float *sig;
	float *av;
	float *sq_sig;
	if(argc == 1){
		imat = f_clear_alloc_matrix(X,Y);
		f_read_from_stdin(imat,dims);
	}else if(argc == 2){
		imat = f_clear_alloc_matrix(X,Y);
		if((in = fopen(argv[1],"r")) == NULL){
			perror(argv[1]);
			exit(1);
		}
		f_read_from_file(in,imat,dims);
		fclose(in);
	}
	sig = add_column(dims[0],dims[1],imat);
	av = f_alloc_list(dims[0]);
	for(i=0;i<dims[1];i++){
		av[i] = sig[i]/dims[0];
	}
	free(sig);
	for(i=0;i<dims[0];i++){
		for(j=0;j<dims[1];j++){
			imat[i][j] = pow((double)(imat[i][j] - av[j]),2);
		}
	}
	free(av);
	sq_sig = add_column(dims[0],dims[1],imat);
	printf("%f",sq_sig[0]/dims[0]);
	for(i=1;i<dims[1];i++){
		printf(" %f",sq_sig[i]/dims[0]);
	}
	printf("\n");
	return(0);
}