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

char *name = "FastMath dist3";

double f_if(float d1, float d2, float d3) {
        float r28063 = d1;
        float r28064 = d2;
        float r28065 = r28063 * r28064;
        float r28066 = d3;
        float r28067 = 5;
        float r28068 = r28066 + r28067;
        float r28069 = r28068 * r28063;
        float r28070 = r28065 + r28069;
        float r28071 = 32;
        float r28072 = r28063 * r28071;
        float r28073 = r28070 + r28072;
        return r28073;
}

double f_id(double d1, double d2, double d3) {
        double r28074 = d1;
        double r28075 = d2;
        double r28076 = r28074 * r28075;
        double r28077 = d3;
        double r28078 = 5;
        double r28079 = r28077 + r28078;
        double r28080 = r28079 * r28074;
        double r28081 = r28076 + r28080;
        double r28082 = 32;
        double r28083 = r28074 * r28082;
        double r28084 = r28081 + r28083;
        return r28084;
}


double f_of(float d1, float d2, float d3) {
        float r28085 = d1;
        float r28086 = d3;
        float r28087 = 5;
        float r28088 = r28086 + r28087;
        float r28089 = 32;
        float r28090 = d2;
        float r28091 = r28089 + r28090;
        float r28092 = r28088 + r28091;
        float r28093 = r28085 * r28092;
        return r28093;
}

double f_od(double d1, double d2, double d3) {
        double r28094 = d1;
        double r28095 = d3;
        double r28096 = 5;
        double r28097 = r28095 + r28096;
        double r28098 = 32;
        double r28099 = d2;
        double r28100 = r28098 + r28099;
        double r28101 = r28097 + r28100;
        double r28102 = r28094 * r28101;
        return r28102;
}

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 r28103, r28104, r28105, r28106, r28107, r28108, r28109, r28110, r28111, r28112, r28113;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28103);
        mpfr_init(r28104);
        mpfr_init(r28105);
        mpfr_init(r28106);
        mpfr_init_set_str(r28107, "5", 10, MPFR_RNDN);
        mpfr_init(r28108);
        mpfr_init(r28109);
        mpfr_init(r28110);
        mpfr_init_set_str(r28111, "32", 10, MPFR_RNDN);
        mpfr_init(r28112);
        mpfr_init(r28113);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r28103, d1, MPFR_RNDN);
        mpfr_set_d(r28104, d2, MPFR_RNDN);
        mpfr_mul(r28105, r28103, r28104, MPFR_RNDN);
        mpfr_set_d(r28106, d3, MPFR_RNDN);
        ;
        mpfr_add(r28108, r28106, r28107, MPFR_RNDN);
        mpfr_mul(r28109, r28108, r28103, MPFR_RNDN);
        mpfr_add(r28110, r28105, r28109, MPFR_RNDN);
        ;
        mpfr_mul(r28112, r28103, r28111, MPFR_RNDN);
        mpfr_add(r28113, r28110, r28112, MPFR_RNDN);
        return mpfr_get_d(r28113, MPFR_RNDN);
}

static mpfr_t r28114, r28115, r28116, r28117, r28118, r28119, r28120, r28121, r28122;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28114);
        mpfr_init(r28115);
        mpfr_init_set_str(r28116, "5", 10, MPFR_RNDN);
        mpfr_init(r28117);
        mpfr_init_set_str(r28118, "32", 10, MPFR_RNDN);
        mpfr_init(r28119);
        mpfr_init(r28120);
        mpfr_init(r28121);
        mpfr_init(r28122);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r28114, d1, MPFR_RNDN);
        mpfr_set_d(r28115, d3, MPFR_RNDN);
        ;
        mpfr_add(r28117, r28115, r28116, MPFR_RNDN);
        ;
        mpfr_set_d(r28119, d2, MPFR_RNDN);
        mpfr_add(r28120, r28118, r28119, MPFR_RNDN);
        mpfr_add(r28121, r28117, r28120, MPFR_RNDN);
        mpfr_mul(r28122, r28114, r28121, MPFR_RNDN);
        return mpfr_get_d(r28122, MPFR_RNDN);
}

static mpfr_t r28123, r28124, r28125, r28126, r28127, r28128, r28129, r28130, r28131;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28123);
        mpfr_init(r28124);
        mpfr_init_set_str(r28125, "5", 10, MPFR_RNDN);
        mpfr_init(r28126);
        mpfr_init_set_str(r28127, "32", 10, MPFR_RNDN);
        mpfr_init(r28128);
        mpfr_init(r28129);
        mpfr_init(r28130);
        mpfr_init(r28131);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r28123, d1, MPFR_RNDN);
        mpfr_set_d(r28124, d3, MPFR_RNDN);
        ;
        mpfr_add(r28126, r28124, r28125, MPFR_RNDN);
        ;
        mpfr_set_d(r28128, d2, MPFR_RNDN);
        mpfr_add(r28129, r28127, r28128, MPFR_RNDN);
        mpfr_add(r28130, r28126, r28129, MPFR_RNDN);
        mpfr_mul(r28131, r28123, r28130, MPFR_RNDN);
        return mpfr_get_d(r28131, MPFR_RNDN);
}

