#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 r40386 = x;
        float r40387 = y;
        float r40388 = r40387 - r40386;
        float r40389 = z;
        float r40390 = r40388 / r40389;
        float r40391 = r40386 + r40390;
        return r40391;
}

double f_id(double x, double y, double z) {
        double r40392 = x;
        double r40393 = y;
        double r40394 = r40393 - r40392;
        double r40395 = z;
        double r40396 = r40394 / r40395;
        double r40397 = r40392 + r40396;
        return r40397;
}


double f_of(float x, float y, float z) {
        float r40398 = x;
        float r40399 = y;
        float r40400 = r40399 - r40398;
        float r40401 = z;
        float r40402 = r40400 / r40401;
        float r40403 = r40398 + r40402;
        return r40403;
}

double f_od(double x, double y, double z) {
        double r40404 = x;
        double r40405 = y;
        double r40406 = r40405 - r40404;
        double r40407 = z;
        double r40408 = r40406 / r40407;
        double r40409 = r40404 + r40408;
        return r40409;
}

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 r40410, r40411, r40412, r40413, r40414, r40415;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r40410);
        mpfr_init(r40411);
        mpfr_init(r40412);
        mpfr_init(r40413);
        mpfr_init(r40414);
        mpfr_init(r40415);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r40410, x, MPFR_RNDN);
        mpfr_set_d(r40411, y, MPFR_RNDN);
        mpfr_sub(r40412, r40411, r40410, MPFR_RNDN);
        mpfr_set_d(r40413, z, MPFR_RNDN);
        mpfr_div(r40414, r40412, r40413, MPFR_RNDN);
        mpfr_add(r40415, r40410, r40414, MPFR_RNDN);
        return mpfr_get_d(r40415, MPFR_RNDN);
}

static mpfr_t r40416, r40417, r40418, r40419, r40420, r40421;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40416);
        mpfr_init(r40417);
        mpfr_init(r40418);
        mpfr_init(r40419);
        mpfr_init(r40420);
        mpfr_init(r40421);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r40416, x, MPFR_RNDN);
        mpfr_set_d(r40417, y, MPFR_RNDN);
        mpfr_sub(r40418, r40417, r40416, MPFR_RNDN);
        mpfr_set_d(r40419, z, MPFR_RNDN);
        mpfr_div(r40420, r40418, r40419, MPFR_RNDN);
        mpfr_add(r40421, r40416, r40420, MPFR_RNDN);
        return mpfr_get_d(r40421, MPFR_RNDN);
}

static mpfr_t r40422, r40423, r40424, r40425, r40426, r40427;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40422);
        mpfr_init(r40423);
        mpfr_init(r40424);
        mpfr_init(r40425);
        mpfr_init(r40426);
        mpfr_init(r40427);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r40422, x, MPFR_RNDN);
        mpfr_set_d(r40423, y, MPFR_RNDN);
        mpfr_sub(r40424, r40423, r40422, MPFR_RNDN);
        mpfr_set_d(r40425, z, MPFR_RNDN);
        mpfr_div(r40426, r40424, r40425, MPFR_RNDN);
        mpfr_add(r40427, r40422, r40426, MPFR_RNDN);
        return mpfr_get_d(r40427, MPFR_RNDN);
}

