#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 r51650 = d1;
        float r51651 = d2;
        float r51652 = r51650 * r51651;
        float r51653 = d3;
        float r51654 = r51650 * r51653;
        float r51655 = r51652 + r51654;
        return r51655;
}

double f_id(double d1, double d2, double d3) {
        double r51656 = d1;
        double r51657 = d2;
        double r51658 = r51656 * r51657;
        double r51659 = d3;
        double r51660 = r51656 * r51659;
        double r51661 = r51658 + r51660;
        return r51661;
}


double f_of(float d1, float d2, float d3) {
        float r51662 = d1;
        float r51663 = d2;
        float r51664 = r51662 * r51663;
        float r51665 = d3;
        float r51666 = r51662 * r51665;
        float r51667 = r51664 + r51666;
        return r51667;
}

double f_od(double d1, double d2, double d3) {
        double r51668 = d1;
        double r51669 = d2;
        double r51670 = r51668 * r51669;
        double r51671 = d3;
        double r51672 = r51668 * r51671;
        double r51673 = r51670 + r51672;
        return r51673;
}

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 r51674, r51675, r51676, r51677, r51678, r51679;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51674);
        mpfr_init(r51675);
        mpfr_init(r51676);
        mpfr_init(r51677);
        mpfr_init(r51678);
        mpfr_init(r51679);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r51674, d1, MPFR_RNDN);
        mpfr_set_d(r51675, d2, MPFR_RNDN);
        mpfr_mul(r51676, r51674, r51675, MPFR_RNDN);
        mpfr_set_d(r51677, d3, MPFR_RNDN);
        mpfr_mul(r51678, r51674, r51677, MPFR_RNDN);
        mpfr_add(r51679, r51676, r51678, MPFR_RNDN);
        return mpfr_get_d(r51679, MPFR_RNDN);
}

static mpfr_t r51680, r51681, r51682, r51683, r51684, r51685;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51680);
        mpfr_init(r51681);
        mpfr_init(r51682);
        mpfr_init(r51683);
        mpfr_init(r51684);
        mpfr_init(r51685);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r51680, d1, MPFR_RNDN);
        mpfr_set_d(r51681, d2, MPFR_RNDN);
        mpfr_mul(r51682, r51680, r51681, MPFR_RNDN);
        mpfr_set_d(r51683, d3, MPFR_RNDN);
        mpfr_mul(r51684, r51680, r51683, MPFR_RNDN);
        mpfr_add(r51685, r51682, r51684, MPFR_RNDN);
        return mpfr_get_d(r51685, MPFR_RNDN);
}

static mpfr_t r51686, r51687, r51688, r51689, r51690, r51691;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51686);
        mpfr_init(r51687);
        mpfr_init(r51688);
        mpfr_init(r51689);
        mpfr_init(r51690);
        mpfr_init(r51691);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r51686, d1, MPFR_RNDN);
        mpfr_set_d(r51687, d2, MPFR_RNDN);
        mpfr_mul(r51688, r51686, r51687, MPFR_RNDN);
        mpfr_set_d(r51689, d3, MPFR_RNDN);
        mpfr_mul(r51690, r51686, r51689, MPFR_RNDN);
        mpfr_add(r51691, r51688, r51690, MPFR_RNDN);
        return mpfr_get_d(r51691, MPFR_RNDN);
}

