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

char *name = "FastMath dist";

double f_if(float d1, float d2, float d3) {
        float r29248 = d1;
        float r29249 = d2;
        float r29250 = r29248 * r29249;
        float r29251 = d3;
        float r29252 = r29248 * r29251;
        float r29253 = r29250 + r29252;
        return r29253;
}

double f_id(double d1, double d2, double d3) {
        double r29254 = d1;
        double r29255 = d2;
        double r29256 = r29254 * r29255;
        double r29257 = d3;
        double r29258 = r29254 * r29257;
        double r29259 = r29256 + r29258;
        return r29259;
}


double f_of(float d1, float d2, float d3) {
        float r29260 = d3;
        float r29261 = d2;
        float r29262 = r29260 + r29261;
        float r29263 = d1;
        float r29264 = r29262 * r29263;
        return r29264;
}

double f_od(double d1, double d2, double d3) {
        double r29265 = d3;
        double r29266 = d2;
        double r29267 = r29265 + r29266;
        double r29268 = d1;
        double r29269 = r29267 * r29268;
        return r29269;
}

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 r29270, r29271, r29272, r29273, r29274, r29275;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r29270);
        mpfr_init(r29271);
        mpfr_init(r29272);
        mpfr_init(r29273);
        mpfr_init(r29274);
        mpfr_init(r29275);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r29270, d1, MPFR_RNDN);
        mpfr_set_d(r29271, d2, MPFR_RNDN);
        mpfr_mul(r29272, r29270, r29271, MPFR_RNDN);
        mpfr_set_d(r29273, d3, MPFR_RNDN);
        mpfr_mul(r29274, r29270, r29273, MPFR_RNDN);
        mpfr_add(r29275, r29272, r29274, MPFR_RNDN);
        return mpfr_get_d(r29275, MPFR_RNDN);
}

static mpfr_t r29276, r29277, r29278, r29279, r29280;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r29276);
        mpfr_init(r29277);
        mpfr_init(r29278);
        mpfr_init(r29279);
        mpfr_init(r29280);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r29276, d3, MPFR_RNDN);
        mpfr_set_d(r29277, d2, MPFR_RNDN);
        mpfr_add(r29278, r29276, r29277, MPFR_RNDN);
        mpfr_set_d(r29279, d1, MPFR_RNDN);
        mpfr_mul(r29280, r29278, r29279, MPFR_RNDN);
        return mpfr_get_d(r29280, MPFR_RNDN);
}

static mpfr_t r29281, r29282, r29283, r29284, r29285;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r29281);
        mpfr_init(r29282);
        mpfr_init(r29283);
        mpfr_init(r29284);
        mpfr_init(r29285);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r29281, d3, MPFR_RNDN);
        mpfr_set_d(r29282, d2, MPFR_RNDN);
        mpfr_add(r29283, r29281, r29282, MPFR_RNDN);
        mpfr_set_d(r29284, d1, MPFR_RNDN);
        mpfr_mul(r29285, r29283, r29284, MPFR_RNDN);
        return mpfr_get_d(r29285, MPFR_RNDN);
}

