hstatistics-0.1.0.1: lib/Numeric/GSL/histogram-aux.c
#include <gsl/gsl_math.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_histogram.h>
#include <gsl/gsl_histogram2d.h>
#include <stdio.h>
int to_vectors(gsl_histogram * H, int rs, double* r, int bs, double* b)
{
int i;
for (i = 0; i < rs; i++)
r[i] = H->range[i];
for (i = 0; i < bs; i++)
b[i] = H->bin[i];
return 0;
}
int increment_vector(gsl_histogram* H, int vs, const double* v)
{
int i;
for (i = 0; i < vs; i++)
gsl_histogram_increment(H,v[i]);
return 0;
}
int accumulate_vector(gsl_histogram* H, int vs, const double* v, int ws, const double* w)
{
if (vs != ws) return 2000; // BAD_SIZE
int i;
for (i = 0; i < vs; i++)
gsl_histogram_accumulate(H,v[i],w[i]);
return 0;
}
int hist_fwrite(const char* filename, const gsl_histogram* h)
{
int err;
FILE* f = fopen(filename,"w");
if (!f) return 2003; // BAD_FILE
err = gsl_histogram_fwrite(f,h);
fclose(f);
return err;
}
int hist_fread(const char* filename, gsl_histogram* h)
{
int err;
FILE* f = fopen(filename,"r");
if (!f) return 2003; // BAD_FILE
err = gsl_histogram_fread(f,h);
fclose(f);
return err;
}
int hist_fprintf(const char* filename, const char* rfmt, const char* bfmt, const gsl_histogram* h)
{
int err;
FILE* f = fopen(filename,"w");
if (!f) return 2003; // BAD_FILE
err = gsl_histogram_fprintf(f,h,rfmt,bfmt);
fclose(f);
return err;
}
int hist_fscanf(const char* filename, gsl_histogram* h)
{
int err;
FILE* f = fopen(filename,"r");
if (!f) return 2003; //BAD_FILE
err = gsl_histogram_fscanf(f,h);
fclose(f);
return err;
}
//////////////////////
int to_matrix(gsl_histogram2d * H, int rxs, double* rx, int rys, double* ry, int bx, int by, double* b)
{
int bz = (rxs-1)*(rys-1);
if (bx*by != bz) return 2000; // BAD_SIZE
int i,j;
for (i = 0; i < rxs; i++)
rx[i] = H->xrange[i];
for (i = 0; i < rys; i++)
ry[i] = H->yrange[i];
for (i = 0; i < bz; i++)
b[i] = H->bin[i];
return 0;
}
int increment_matrix(gsl_histogram2d* H, int xs, const double* x, int ys, const double* y)
{
if (xs != ys) return 2000; // BAD_SIZE
int i;
for (i = 0; i < xs; i++)
gsl_histogram2d_increment(H,x[i],y[i]);
return 0;
}
int accumulate_matrix(gsl_histogram2d* H, int xs, const double* x, int ys, const double* y, int ws, const double* w)
{
if (xs != ys) return 2000; // BAD_SIZE
if (xs != ws) return 2000; // BAD_SIZE
int i;
for (i = 0; i < xs; i++)
gsl_histogram2d_accumulate(H,x[i],y[i],w[i]);
return 0;
}
int hist2d_fwrite(const char* filename, const gsl_histogram2d* h)
{
int err;
FILE* f = fopen(filename,"w");
if (!f) return 2003; // BAD_FILE
err = gsl_histogram2d_fwrite(f,h);
fclose(f);
return err;
}
int hist2d_fread(const char* filename, gsl_histogram2d* h)
{
int err;
FILE* f = fopen(filename,"r");
if (!f) return 2003; // BAD_FILE
err = gsl_histogram2d_fread(f,h);
fclose(f);
return err;
}
int hist2d_fprintf(const char* filename, const char* rfmt, const char* bfmt, const gsl_histogram2d* h)
{
int err;
FILE* f = fopen(filename,"w");
if (!f) return 2003; // BAD_FILE
err = gsl_histogram2d_fprintf(f,h,rfmt,bfmt);
fclose(f);
return err;
}
int hist2d_fscanf(const char* filename, gsl_histogram2d* h)
{
int err;
FILE* f = fopen(filename,"r");
if (!f) return 2003; //BAD_FILE
err = gsl_histogram2d_fscanf(f,h);
fclose(f);
return err;
}