#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 r12000 = d1;
        float r12001 = d2;
        float r12002 = r12000 * r12001;
        float r12003 = d3;
        float r12004 = 5.0f;
        float r12005 = r12003 + r12004;
        float r12006 = r12005 * r12000;
        float r12007 = r12002 + r12006;
        float r12008 = 32.0f;
        float r12009 = r12000 * r12008;
        float r12010 = r12007 + r12009;
        return r12010;
}

double f_id(double d1, double d2, double d3) {
        double r12011 = d1;
        double r12012 = d2;
        double r12013 = r12011 * r12012;
        double r12014 = d3;
        double r12015 = 5.0;
        double r12016 = r12014 + r12015;
        double r12017 = r12016 * r12011;
        double r12018 = r12013 + r12017;
        double r12019 = 32.0;
        double r12020 = r12011 * r12019;
        double r12021 = r12018 + r12020;
        return r12021;
}


double f_of(float d1, float d2, float d3) {
        float r12022 = d2;
        float r12023 = 5.0f;
        float r12024 = r12022 + r12023;
        float r12025 = 32.0f;
        float r12026 = d3;
        float r12027 = r12025 + r12026;
        float r12028 = r12024 + r12027;
        float r12029 = d1;
        float r12030 = r12028 * r12029;
        return r12030;
}

double f_od(double d1, double d2, double d3) {
        double r12031 = d2;
        double r12032 = 5.0;
        double r12033 = r12031 + r12032;
        double r12034 = 32.0;
        double r12035 = d3;
        double r12036 = r12034 + r12035;
        double r12037 = r12033 + r12036;
        double r12038 = d1;
        double r12039 = r12037 * r12038;
        return r12039;
}

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 r12040, r12041, r12042, r12043, r12044, r12045, r12046, r12047, r12048, r12049, r12050;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12040);
        mpfr_init(r12041);
        mpfr_init(r12042);
        mpfr_init(r12043);
        mpfr_init_set_str(r12044, "5", 10, MPFR_RNDN);
        mpfr_init(r12045);
        mpfr_init(r12046);
        mpfr_init(r12047);
        mpfr_init_set_str(r12048, "32", 10, MPFR_RNDN);
        mpfr_init(r12049);
        mpfr_init(r12050);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r12040, d1, MPFR_RNDN);
        mpfr_set_d(r12041, d2, MPFR_RNDN);
        mpfr_mul(r12042, r12040, r12041, MPFR_RNDN);
        mpfr_set_d(r12043, d3, MPFR_RNDN);
        ;
        mpfr_add(r12045, r12043, r12044, MPFR_RNDN);
        mpfr_mul(r12046, r12045, r12040, MPFR_RNDN);
        mpfr_add(r12047, r12042, r12046, MPFR_RNDN);
        ;
        mpfr_mul(r12049, r12040, r12048, MPFR_RNDN);
        mpfr_add(r12050, r12047, r12049, MPFR_RNDN);
        return mpfr_get_d(r12050, MPFR_RNDN);
}

static mpfr_t r12051, r12052, r12053, r12054, r12055, r12056, r12057, r12058, r12059;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12051);
        mpfr_init_set_str(r12052, "5", 10, MPFR_RNDN);
        mpfr_init(r12053);
        mpfr_init_set_str(r12054, "32", 10, MPFR_RNDN);
        mpfr_init(r12055);
        mpfr_init(r12056);
        mpfr_init(r12057);
        mpfr_init(r12058);
        mpfr_init(r12059);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r12051, d2, MPFR_RNDN);
        ;
        mpfr_add(r12053, r12051, r12052, MPFR_RNDN);
        ;
        mpfr_set_d(r12055, d3, MPFR_RNDN);
        mpfr_add(r12056, r12054, r12055, MPFR_RNDN);
        mpfr_add(r12057, r12053, r12056, MPFR_RNDN);
        mpfr_set_d(r12058, d1, MPFR_RNDN);
        mpfr_mul(r12059, r12057, r12058, MPFR_RNDN);
        return mpfr_get_d(r12059, MPFR_RNDN);
}

static mpfr_t r12060, r12061, r12062, r12063, r12064, r12065, r12066, r12067, r12068;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12060);
        mpfr_init_set_str(r12061, "5", 10, MPFR_RNDN);
        mpfr_init(r12062);
        mpfr_init_set_str(r12063, "32", 10, MPFR_RNDN);
        mpfr_init(r12064);
        mpfr_init(r12065);
        mpfr_init(r12066);
        mpfr_init(r12067);
        mpfr_init(r12068);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r12060, d2, MPFR_RNDN);
        ;
        mpfr_add(r12062, r12060, r12061, MPFR_RNDN);
        ;
        mpfr_set_d(r12064, d3, MPFR_RNDN);
        mpfr_add(r12065, r12063, r12064, MPFR_RNDN);
        mpfr_add(r12066, r12062, r12065, MPFR_RNDN);
        mpfr_set_d(r12067, d1, MPFR_RNDN);
        mpfr_mul(r12068, r12066, r12067, MPFR_RNDN);
        return mpfr_get_d(r12068, MPFR_RNDN);
}

