#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 r26029 = d1;
        float r26030 = d2;
        float r26031 = r26029 * r26030;
        float r26032 = d3;
        float r26033 = r26029 * r26032;
        float r26034 = r26031 + r26033;
        return r26034;
}

double f_id(double d1, double d2, double d3) {
        double r26035 = d1;
        double r26036 = d2;
        double r26037 = r26035 * r26036;
        double r26038 = d3;
        double r26039 = r26035 * r26038;
        double r26040 = r26037 + r26039;
        return r26040;
}


double f_of(float d1, float d2, float d3) {
        float r26041 = d1;
        float r26042 = d2;
        float r26043 = d3;
        float r26044 = r26041 * r26043;
        float r26045 = fma(r26041, r26042, r26044);
        return r26045;
}

double f_od(double d1, double d2, double d3) {
        double r26046 = d1;
        double r26047 = d2;
        double r26048 = d3;
        double r26049 = r26046 * r26048;
        double r26050 = fma(r26046, r26047, r26049);
        return r26050;
}

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 r26051, r26052, r26053, r26054, r26055, r26056;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26051);
        mpfr_init(r26052);
        mpfr_init(r26053);
        mpfr_init(r26054);
        mpfr_init(r26055);
        mpfr_init(r26056);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r26051, d1, MPFR_RNDN);
        mpfr_set_d(r26052, d2, MPFR_RNDN);
        mpfr_mul(r26053, r26051, r26052, MPFR_RNDN);
        mpfr_set_d(r26054, d3, MPFR_RNDN);
        mpfr_mul(r26055, r26051, r26054, MPFR_RNDN);
        mpfr_add(r26056, r26053, r26055, MPFR_RNDN);
        return mpfr_get_d(r26056, MPFR_RNDN);
}

static mpfr_t r26057, r26058, r26059, r26060, r26061;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26057);
        mpfr_init(r26058);
        mpfr_init(r26059);
        mpfr_init(r26060);
        mpfr_init(r26061);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r26057, d1, MPFR_RNDN);
        mpfr_set_d(r26058, d2, MPFR_RNDN);
        mpfr_set_d(r26059, d3, MPFR_RNDN);
        mpfr_mul(r26060, r26057, r26059, MPFR_RNDN);
        mpfr_fma(r26061, r26057, r26058, r26060, MPFR_RNDN);
        return mpfr_get_d(r26061, MPFR_RNDN);
}

static mpfr_t r26062, r26063, r26064, r26065, r26066;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26062);
        mpfr_init(r26063);
        mpfr_init(r26064);
        mpfr_init(r26065);
        mpfr_init(r26066);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r26062, d1, MPFR_RNDN);
        mpfr_set_d(r26063, d2, MPFR_RNDN);
        mpfr_set_d(r26064, d3, MPFR_RNDN);
        mpfr_mul(r26065, r26062, r26064, MPFR_RNDN);
        mpfr_fma(r26066, r26062, r26063, r26065, MPFR_RNDN);
        return mpfr_get_d(r26066, MPFR_RNDN);
}

