#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Statistics.Sample:$swelfordMean from math-functions-0.1.5.2";

double f_if(float x, float y, float z) {
        float r40414 = x;
        float r40415 = y;
        float r40416 = r40415 - r40414;
        float r40417 = z;
        float r40418 = r40416 / r40417;
        float r40419 = r40414 + r40418;
        return r40419;
}

double f_id(double x, double y, double z) {
        double r40420 = x;
        double r40421 = y;
        double r40422 = r40421 - r40420;
        double r40423 = z;
        double r40424 = r40422 / r40423;
        double r40425 = r40420 + r40424;
        return r40425;
}


double f_of(float x, float y, float z) {
        float r40426 = x;
        float r40427 = y;
        float r40428 = r40427 - r40426;
        float r40429 = z;
        float r40430 = r40428 / r40429;
        float r40431 = r40426 + r40430;
        return r40431;
}

double f_od(double x, double y, double z) {
        double r40432 = x;
        double r40433 = y;
        double r40434 = r40433 - r40432;
        double r40435 = z;
        double r40436 = r40434 / r40435;
        double r40437 = r40432 + r40436;
        return r40437;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r40438, r40439, r40440, r40441, r40442, r40443;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r40438);
        mpfr_init(r40439);
        mpfr_init(r40440);
        mpfr_init(r40441);
        mpfr_init(r40442);
        mpfr_init(r40443);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r40438, x, MPFR_RNDN);
        mpfr_set_d(r40439, y, MPFR_RNDN);
        mpfr_sub(r40440, r40439, r40438, MPFR_RNDN);
        mpfr_set_d(r40441, z, MPFR_RNDN);
        mpfr_div(r40442, r40440, r40441, MPFR_RNDN);
        mpfr_add(r40443, r40438, r40442, MPFR_RNDN);
        return mpfr_get_d(r40443, MPFR_RNDN);
}

static mpfr_t r40444, r40445, r40446, r40447, r40448, r40449;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40444);
        mpfr_init(r40445);
        mpfr_init(r40446);
        mpfr_init(r40447);
        mpfr_init(r40448);
        mpfr_init(r40449);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r40444, x, MPFR_RNDN);
        mpfr_set_d(r40445, y, MPFR_RNDN);
        mpfr_sub(r40446, r40445, r40444, MPFR_RNDN);
        mpfr_set_d(r40447, z, MPFR_RNDN);
        mpfr_div(r40448, r40446, r40447, MPFR_RNDN);
        mpfr_add(r40449, r40444, r40448, MPFR_RNDN);
        return mpfr_get_d(r40449, MPFR_RNDN);
}

static mpfr_t r40450, r40451, r40452, r40453, r40454, r40455;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40450);
        mpfr_init(r40451);
        mpfr_init(r40452);
        mpfr_init(r40453);
        mpfr_init(r40454);
        mpfr_init(r40455);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r40450, x, MPFR_RNDN);
        mpfr_set_d(r40451, y, MPFR_RNDN);
        mpfr_sub(r40452, r40451, r40450, MPFR_RNDN);
        mpfr_set_d(r40453, z, MPFR_RNDN);
        mpfr_div(r40454, r40452, r40453, MPFR_RNDN);
        mpfr_add(r40455, r40450, r40454, MPFR_RNDN);
        return mpfr_get_d(r40455, MPFR_RNDN);
}

