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

char *name = "Data.Metrics.Snapshot:quantile from metrics-0.3.0.2";

double f_if(float x, float y, float z, float t) {
        float r56430 = x;
        float r56431 = y;
        float r56432 = z;
        float r56433 = r56431 - r56432;
        float r56434 = t;
        float r56435 = r56434 - r56430;
        float r56436 = r56433 * r56435;
        float r56437 = r56430 + r56436;
        return r56437;
}

double f_id(double x, double y, double z, double t) {
        double r56438 = x;
        double r56439 = y;
        double r56440 = z;
        double r56441 = r56439 - r56440;
        double r56442 = t;
        double r56443 = r56442 - r56438;
        double r56444 = r56441 * r56443;
        double r56445 = r56438 + r56444;
        return r56445;
}


double f_of(float x, float y, float z, float t) {
        float r56446 = x;
        float r56447 = y;
        float r56448 = z;
        float r56449 = r56447 - r56448;
        float r56450 = t;
        float r56451 = r56450 - r56446;
        float r56452 = r56449 * r56451;
        float r56453 = r56446 + r56452;
        return r56453;
}

double f_od(double x, double y, double z, double t) {
        double r56454 = x;
        double r56455 = y;
        double r56456 = z;
        double r56457 = r56455 - r56456;
        double r56458 = t;
        double r56459 = r56458 - r56454;
        double r56460 = r56457 * r56459;
        double r56461 = r56454 + r56460;
        return r56461;
}

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 r56462, r56463, r56464, r56465, r56466, r56467, r56468, r56469;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56462);
        mpfr_init(r56463);
        mpfr_init(r56464);
        mpfr_init(r56465);
        mpfr_init(r56466);
        mpfr_init(r56467);
        mpfr_init(r56468);
        mpfr_init(r56469);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r56462, x, MPFR_RNDN);
        mpfr_set_d(r56463, y, MPFR_RNDN);
        mpfr_set_d(r56464, z, MPFR_RNDN);
        mpfr_sub(r56465, r56463, r56464, MPFR_RNDN);
        mpfr_set_d(r56466, t, MPFR_RNDN);
        mpfr_sub(r56467, r56466, r56462, MPFR_RNDN);
        mpfr_mul(r56468, r56465, r56467, MPFR_RNDN);
        mpfr_add(r56469, r56462, r56468, MPFR_RNDN);
        return mpfr_get_d(r56469, MPFR_RNDN);
}

static mpfr_t r56470, r56471, r56472, r56473, r56474, r56475, r56476, r56477;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56470);
        mpfr_init(r56471);
        mpfr_init(r56472);
        mpfr_init(r56473);
        mpfr_init(r56474);
        mpfr_init(r56475);
        mpfr_init(r56476);
        mpfr_init(r56477);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r56470, x, MPFR_RNDN);
        mpfr_set_d(r56471, y, MPFR_RNDN);
        mpfr_set_d(r56472, z, MPFR_RNDN);
        mpfr_sub(r56473, r56471, r56472, MPFR_RNDN);
        mpfr_set_d(r56474, t, MPFR_RNDN);
        mpfr_sub(r56475, r56474, r56470, MPFR_RNDN);
        mpfr_mul(r56476, r56473, r56475, MPFR_RNDN);
        mpfr_add(r56477, r56470, r56476, MPFR_RNDN);
        return mpfr_get_d(r56477, MPFR_RNDN);
}

static mpfr_t r56478, r56479, r56480, r56481, r56482, r56483, r56484, r56485;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56478);
        mpfr_init(r56479);
        mpfr_init(r56480);
        mpfr_init(r56481);
        mpfr_init(r56482);
        mpfr_init(r56483);
        mpfr_init(r56484);
        mpfr_init(r56485);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r56478, x, MPFR_RNDN);
        mpfr_set_d(r56479, y, MPFR_RNDN);
        mpfr_set_d(r56480, z, MPFR_RNDN);
        mpfr_sub(r56481, r56479, r56480, MPFR_RNDN);
        mpfr_set_d(r56482, t, MPFR_RNDN);
        mpfr_sub(r56483, r56482, r56478, MPFR_RNDN);
        mpfr_mul(r56484, r56481, r56483, MPFR_RNDN);
        mpfr_add(r56485, r56478, r56484, MPFR_RNDN);
        return mpfr_get_d(r56485, MPFR_RNDN);
}

