#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 r19752 = d1;
        float r19753 = d2;
        float r19754 = r19752 * r19753;
        float r19755 = d3;
        float r19756 = r19752 * r19755;
        float r19757 = r19754 + r19756;
        return r19757;
}

double f_id(double d1, double d2, double d3) {
        double r19758 = d1;
        double r19759 = d2;
        double r19760 = r19758 * r19759;
        double r19761 = d3;
        double r19762 = r19758 * r19761;
        double r19763 = r19760 + r19762;
        return r19763;
}


double f_of(float d1, float d2, float d3) {
        float r19764 = d2;
        float r19765 = d3;
        float r19766 = r19764 + r19765;
        float r19767 = d1;
        float r19768 = r19766 * r19767;
        return r19768;
}

double f_od(double d1, double d2, double d3) {
        double r19769 = d2;
        double r19770 = d3;
        double r19771 = r19769 + r19770;
        double r19772 = d1;
        double r19773 = r19771 * r19772;
        return r19773;
}

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 r19774, r19775, r19776, r19777, r19778, r19779;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r19774);
        mpfr_init(r19775);
        mpfr_init(r19776);
        mpfr_init(r19777);
        mpfr_init(r19778);
        mpfr_init(r19779);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r19774, d1, MPFR_RNDN);
        mpfr_set_d(r19775, d2, MPFR_RNDN);
        mpfr_mul(r19776, r19774, r19775, MPFR_RNDN);
        mpfr_set_d(r19777, d3, MPFR_RNDN);
        mpfr_mul(r19778, r19774, r19777, MPFR_RNDN);
        mpfr_add(r19779, r19776, r19778, MPFR_RNDN);
        return mpfr_get_d(r19779, MPFR_RNDN);
}

static mpfr_t r19780, r19781, r19782, r19783, r19784;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19780);
        mpfr_init(r19781);
        mpfr_init(r19782);
        mpfr_init(r19783);
        mpfr_init(r19784);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r19780, d2, MPFR_RNDN);
        mpfr_set_d(r19781, d3, MPFR_RNDN);
        mpfr_add(r19782, r19780, r19781, MPFR_RNDN);
        mpfr_set_d(r19783, d1, MPFR_RNDN);
        mpfr_mul(r19784, r19782, r19783, MPFR_RNDN);
        return mpfr_get_d(r19784, MPFR_RNDN);
}

static mpfr_t r19785, r19786, r19787, r19788, r19789;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19785);
        mpfr_init(r19786);
        mpfr_init(r19787);
        mpfr_init(r19788);
        mpfr_init(r19789);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r19785, d2, MPFR_RNDN);
        mpfr_set_d(r19786, d3, MPFR_RNDN);
        mpfr_add(r19787, r19785, r19786, MPFR_RNDN);
        mpfr_set_d(r19788, d1, MPFR_RNDN);
        mpfr_mul(r19789, r19787, r19788, MPFR_RNDN);
        return mpfr_get_d(r19789, MPFR_RNDN);
}

