|
Packit |
67cb25 |
/* histogram/test.c
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
67cb25 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
67cb25 |
* the Free Software Foundation; either version 3 of the License, or (at
|
|
Packit |
67cb25 |
* your option) any later version.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
67cb25 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
67cb25 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
67cb25 |
* General Public License for more details.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
67cb25 |
* along with this program; if not, write to the Free Software
|
|
Packit |
67cb25 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#include <config.h>
|
|
Packit |
67cb25 |
#include <stdlib.h>
|
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_histogram.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_test.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_ieee_utils.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#define N 397
|
|
Packit |
67cb25 |
#define NR 10
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
void
|
|
Packit |
67cb25 |
test1d (void)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double xr[NR + 1] =
|
|
Packit |
67cb25 |
{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram *h, *h1, *hr, *g;
|
|
Packit |
67cb25 |
size_t i, j;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_ieee_env_setup ();
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
h = gsl_histogram_calloc (N);
|
|
Packit |
67cb25 |
h1 = gsl_histogram_calloc (N);
|
|
Packit |
67cb25 |
g = gsl_histogram_calloc (N);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (h->range == 0, "gsl_histogram_alloc returns valid range pointer");
|
|
Packit |
67cb25 |
gsl_test (h->bin == 0, "gsl_histogram_alloc returns valid bin pointer");
|
|
Packit |
67cb25 |
gsl_test (h->n != N, "gsl_histogram_alloc returns valid size");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
hr = gsl_histogram_calloc_range (NR, xr);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (hr->range == 0, "gsl_histogram_calloc_range returns valid range pointer");
|
|
Packit |
67cb25 |
gsl_test (hr->bin == 0, "gsl_histogram_calloc_range returns valid bin pointer");
|
|
Packit |
67cb25 |
gsl_test (hr->n != NR, "gsl_histogram_calloc_range returns valid size");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i <= NR; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (hr->range[i] != xr[i])
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_calloc_range creates range");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i <= NR; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
hr->range[i] = 0.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = gsl_histogram_set_ranges (hr, xr, NR+1);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i <= NR; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (hr->range[i] != xr[i])
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_set_range sets range");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
gsl_histogram_accumulate (h, (double) i, (double) i);
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h->bin[i] != (double) i)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_accumulate writes into array");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (gsl_histogram_get (h, i) != i)
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_get reads from array");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i <= N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
h1->range[i] = 100.0 + i;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i <= N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->range[i] != h->range[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_memcpy copies bin ranges");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i))
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_memcpy copies bin values");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_free (h1);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
h1 = gsl_histogram_clone (h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i <= N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->range[i] != h->range[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_clone copies bin ranges");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i))
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_clone copies bin values");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_reset (h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h->bin[i] != 0)
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_reset zeros array");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
gsl_histogram_increment (h, (double) i);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (j = 0; j <= i; j++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h->bin[j] != 1)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (j = i + 1; j < N; j++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h->bin[j] != 0)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_increment increases bin value");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double x0 = 0, x1 = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_get_range (h, i, &x0, &x1;;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
if (x0 != i || x1 != i + 1)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_getbinrange returns bin range");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
if (gsl_histogram_max (h) != N)
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_max returns maximum");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
if (gsl_histogram_min (h) != 0)
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_min returns minimum");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
if (gsl_histogram_bins (h) != N)
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_bins returns number of bins");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
h->bin[2] = 123456.0;
|
|
Packit |
67cb25 |
h->bin[4] = -654321;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double max = gsl_histogram_max_val (h);
|
|
Packit |
67cb25 |
gsl_test (max != 123456.0, "gsl_histogram_max_val finds maximum value");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double min = gsl_histogram_min_val (h);
|
|
Packit |
67cb25 |
gsl_test (min != -654321.0, "gsl_histogram_min_val finds minimum value");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
size_t imax = gsl_histogram_max_bin (h);
|
|
Packit |
67cb25 |
gsl_test (imax != 2, "gsl_histogram_max_bin finds maximum value bin");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
size_t imin = gsl_histogram_min_bin (h);
|
|
Packit |
67cb25 |
gsl_test (imin != 4, "gsl_histogram_min_bin find minimum value bin");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
h->bin[i] = i + 27;
|
|
Packit |
67cb25 |
g->bin[i] = (i + 27) * (i + 1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double sum=gsl_histogram_sum (h);
|
|
Packit |
67cb25 |
gsl_test(sum != N*27+((N-1)*N)/2, "gsl_histogram_sum sums all bin values");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, g);
|
|
Packit |
67cb25 |
gsl_histogram_add (h1, h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->bin[i] != g->bin[i] + h->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_add histogram addition");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, g);
|
|
Packit |
67cb25 |
gsl_histogram_sub (h1, h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->bin[i] != g->bin[i] - h->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_sub histogram subtraction");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, g);
|
|
Packit |
67cb25 |
gsl_histogram_mul (h1, h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->bin[i] != g->bin[i] * h->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_mul histogram multiplication");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, g);
|
|
Packit |
67cb25 |
gsl_histogram_div (h1, h);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->bin[i] != g->bin[i] / h->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_div histogram division");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, g);
|
|
Packit |
67cb25 |
gsl_histogram_scale (h1, 0.5);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->bin[i] != 0.5 * g->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_scale histogram scaling");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_memcpy (h1, g);
|
|
Packit |
67cb25 |
gsl_histogram_shift (h1, 0.25);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h1->bin[i] != 0.25 + g->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_shift histogram shift");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_free (h); /* free whatever is in h */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
h = gsl_histogram_calloc_uniform (N, 0.0, 1.0);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (h->range == 0,
|
|
Packit |
67cb25 |
"gsl_histogram_calloc_uniform returns valid range pointer");
|
|
Packit |
67cb25 |
gsl_test (h->bin == 0,
|
|
Packit |
67cb25 |
"gsl_histogram_calloc_uniform returns valid bin pointer");
|
|
Packit |
67cb25 |
gsl_test (h->n != N,
|
|
Packit |
67cb25 |
"gsl_histogram_calloc_uniform returns valid size");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_accumulate (h, 0.0, 1.0);
|
|
Packit |
67cb25 |
gsl_histogram_accumulate (h, 0.1, 2.0);
|
|
Packit |
67cb25 |
gsl_histogram_accumulate (h, 0.2, 3.0);
|
|
Packit |
67cb25 |
gsl_histogram_accumulate (h, 0.3, 4.0);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
size_t i1, i2, i3, i4;
|
|
Packit |
67cb25 |
double expected;
|
|
Packit |
67cb25 |
int status = gsl_histogram_find (h, 0.0, &i1;;
|
|
Packit |
67cb25 |
status = gsl_histogram_find (h, 0.1, &i2;;
|
|
Packit |
67cb25 |
status = gsl_histogram_find (h, 0.2, &i3;;
|
|
Packit |
67cb25 |
status = gsl_histogram_find (h, 0.3, &i4;;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (i == i1)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
expected = 1.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (i == i2)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
expected = 2.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (i == i3)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
expected = 3.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (i == i4)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
expected = 4.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
expected = 0.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
if (h->bin[i] != expected)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_find returns index");
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
FILE *f = fopen ("test.txt", "w");
|
|
Packit |
67cb25 |
gsl_histogram_fprintf (f, h, "%.19e", "%.19e");
|
|
Packit |
67cb25 |
fclose (f);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
FILE *f = fopen ("test.txt", "r");
|
|
Packit |
67cb25 |
gsl_histogram *hh = gsl_histogram_calloc (N);
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_fscanf (f, hh);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h->range[i] != hh->range[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
if (h->bin[i] != hh->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
if (h->range[N] != hh->range[N])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_fprintf and fscanf");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_free (hh);
|
|
Packit |
67cb25 |
fclose (f);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
FILE *f = fopen ("test.dat", "wb");
|
|
Packit |
67cb25 |
gsl_histogram_fwrite (f, h);
|
|
Packit |
67cb25 |
fclose (f);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
FILE *f = fopen ("test.dat", "rb");
|
|
Packit |
67cb25 |
gsl_histogram *hh = gsl_histogram_calloc (N);
|
|
Packit |
67cb25 |
int status = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_fread (f, hh);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < N; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
if (h->range[i] != hh->range[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
if (h->bin[i] != hh->bin[i])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
if (h->range[N] != hh->range[N])
|
|
Packit |
67cb25 |
status = 1;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_test (status, "gsl_histogram_fwrite and fread");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_free (hh);
|
|
Packit |
67cb25 |
fclose (f);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_histogram_free (h);
|
|
Packit |
67cb25 |
gsl_histogram_free (g);
|
|
Packit |
67cb25 |
gsl_histogram_free (h1);
|
|
Packit |
67cb25 |
gsl_histogram_free (hr);
|
|
Packit |
67cb25 |
}
|