Hi,

Looks like currently "gsl_rstat_reset" does not reset "median_workspace_p"
member of "gsl_rstat_workspace". This results in wrong median computations
after one reset. Minimum program attached shows the problem.

Actually "gsl_rstat_workspace" does not include an "reset" function which
would be useful.

I am willing to write a simple fix for that.

Thank you,
Pedro Donato
#include <stdio.h>
#include <gsl/gsl_rstat.h>

int main()
{

    gsl_rstat_workspace * rstat = gsl_rstat_alloc();

    gsl_rstat_add(1.0,rstat); 
    gsl_rstat_add(2.0,rstat); 
    gsl_rstat_add(3.0,rstat); 

    printf("Data = 1, 2, 3\n");
    printf("Mean = %lf, Median = %lf \n", 
            gsl_rstat_mean(rstat), gsl_rstat_median(rstat));

    gsl_rstat_reset(rstat);
    
    printf("After reset:\n");
    printf("Mean = %lf, Median = %lf \n", 
            gsl_rstat_mean(rstat), gsl_rstat_median(rstat));

    gsl_rstat_add(4.0,rstat); 
    gsl_rstat_add(5.0,rstat); 
    gsl_rstat_add(6.0,rstat); 

    printf("New data added: 4, 5, 6\n");
    printf("Mean = %lf, Median = %lf \n", 
            gsl_rstat_mean(rstat), gsl_rstat_median(rstat));

    return 0;
}

Reply via email to