Math-LOESS

 view release on metacpan or  search on metacpan

loess/loess.h  view on Meta::CPAN

#include <stdio.h>
#include <stdlib.h>

#define TRUE  1
#define FALSE 0
#define MALLOC(n) safe_malloc(n, __LINE__)

/* Structures */

typedef struct {
    int err_status;
    char *err_msg;
    } loess_errstatus;

typedef struct {
    long    n;
    long    p;
    double  *y;
    double  *x;
    double  *weights;
    } loess_inputs;

typedef struct {
    double span;
    int    degree;
    int    normalize;
    int    parametric[8];
    int    drop_square[8];
    char   *family;
    } loess_model;

typedef struct {
    char   *surface;
    char   *statistics;
    double cell;
    char   *trace_hat;
    int    iterations;
    } loess_control;

typedef struct {
    int   *parameter;
    int   *a;
    double *xi;
    double *vert;
    double *vval;
    } loess_kd_tree;

typedef struct {
    double *fitted_values;
    double *fitted_residuals;
    double enp;
    double residual_scale;
    double one_delta;
    double two_delta;
    double *pseudovalues;
    double trace_hat;
    double *diagonal;
    double *robust;
    double *divisor;
    } loess_outputs;

typedef struct {
    loess_inputs *inputs;
    loess_model *model;
    loess_control *control;
    loess_kd_tree *kd_tree;
    loess_outputs *outputs;
    loess_errstatus status;
} loess;

typedef struct {
    double *fit;
    double *se_fit;
    int se;
    int m;
    double residual_scale;
    double df;
    } prediction;

typedef struct {
    double dfn;
    double dfd;
    double F_value;
    double Pr_F;
    } anova_struct;

typedef struct {
    double *fit;
    double *upper;
    double *lower;
    } confidence_intervals;

//  from loess.c
void loess_model_setup(loess_model *model);
void loess_inputs_setup(double *x, double *y, double *w, long n, long p, loess_inputs *inputs);
void loess_outputs_setup(long n, long p, loess_outputs *outputs);
void loess_control_setup(loess_control *control);



( run in 0.534 second using v1.01-cache-2.11-cpan-71847e10f99 )