#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 r12029 = d1;
        float r12030 = d2;
        float r12031 = r12029 * r12030;
        float r12032 = d3;
        float r12033 = 5.0f;
        float r12034 = r12032 + r12033;
        float r12035 = r12034 * r12029;
        float r12036 = r12031 + r12035;
        float r12037 = 32.0f;
        float r12038 = r12029 * r12037;
        float r12039 = r12036 + r12038;
        return r12039;
}

double f_id(double d1, double d2, double d3) {
        double r12040 = d1;
        double r12041 = d2;
        double r12042 = r12040 * r12041;
        double r12043 = d3;
        double r12044 = 5.0;
        double r12045 = r12043 + r12044;
        double r12046 = r12045 * r12040;
        double r12047 = r12042 + r12046;
        double r12048 = 32.0;
        double r12049 = r12040 * r12048;
        double r12050 = r12047 + r12049;
        return r12050;
}


double f_of(float d1, float d2, float d3) {
        float r12051 = d2;
        float r12052 = 5.0f;
        float r12053 = r12051 + r12052;
        float r12054 = 32.0f;
        float r12055 = d3;
        float r12056 = r12054 + r12055;
        float r12057 = r12053 + r12056;
        float r12058 = d1;
        float r12059 = r12057 * r12058;
        return r12059;
}

double f_od(double d1, double d2, double d3) {
        double r12060 = d2;
        double r12061 = 5.0;
        double r12062 = r12060 + r12061;
        double r12063 = 32.0;
        double r12064 = d3;
        double r12065 = r12063 + r12064;
        double r12066 = r12062 + r12065;
        double r12067 = d1;
        double r12068 = r12066 * r12067;
        return r12068;
}

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 r12069, r12070, r12071, r12072, r12073, r12074, r12075, r12076, r12077, r12078, r12079;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12069);
        mpfr_init(r12070);
        mpfr_init(r12071);
        mpfr_init(r12072);
        mpfr_init_set_str(r12073, "5", 10, MPFR_RNDN);
        mpfr_init(r12074);
        mpfr_init(r12075);
        mpfr_init(r12076);
        mpfr_init_set_str(r12077, "32", 10, MPFR_RNDN);
        mpfr_init(r12078);
        mpfr_init(r12079);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r12069, d1, MPFR_RNDN);
        mpfr_set_d(r12070, d2, MPFR_RNDN);
        mpfr_mul(r12071, r12069, r12070, MPFR_RNDN);
        mpfr_set_d(r12072, d3, MPFR_RNDN);
        ;
        mpfr_add(r12074, r12072, r12073, MPFR_RNDN);
        mpfr_mul(r12075, r12074, r12069, MPFR_RNDN);
        mpfr_add(r12076, r12071, r12075, MPFR_RNDN);
        ;
        mpfr_mul(r12078, r12069, r12077, MPFR_RNDN);
        mpfr_add(r12079, r12076, r12078, MPFR_RNDN);
        return mpfr_get_d(r12079, MPFR_RNDN);
}

static mpfr_t r12080, r12081, r12082, r12083, r12084, r12085, r12086, r12087, r12088;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12080);
        mpfr_init_set_str(r12081, "5", 10, MPFR_RNDN);
        mpfr_init(r12082);
        mpfr_init_set_str(r12083, "32", 10, MPFR_RNDN);
        mpfr_init(r12084);
        mpfr_init(r12085);
        mpfr_init(r12086);
        mpfr_init(r12087);
        mpfr_init(r12088);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r12080, d2, MPFR_RNDN);
        ;
        mpfr_add(r12082, r12080, r12081, MPFR_RNDN);
        ;
        mpfr_set_d(r12084, d3, MPFR_RNDN);
        mpfr_add(r12085, r12083, r12084, MPFR_RNDN);
        mpfr_add(r12086, r12082, r12085, MPFR_RNDN);
        mpfr_set_d(r12087, d1, MPFR_RNDN);
        mpfr_mul(r12088, r12086, r12087, MPFR_RNDN);
        return mpfr_get_d(r12088, MPFR_RNDN);
}

static mpfr_t r12089, r12090, r12091, r12092, r12093, r12094, r12095, r12096, r12097;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12089);
        mpfr_init_set_str(r12090, "5", 10, MPFR_RNDN);
        mpfr_init(r12091);
        mpfr_init_set_str(r12092, "32", 10, MPFR_RNDN);
        mpfr_init(r12093);
        mpfr_init(r12094);
        mpfr_init(r12095);
        mpfr_init(r12096);
        mpfr_init(r12097);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r12089, d2, MPFR_RNDN);
        ;
        mpfr_add(r12091, r12089, r12090, MPFR_RNDN);
        ;
        mpfr_set_d(r12093, d3, MPFR_RNDN);
        mpfr_add(r12094, r12092, r12093, MPFR_RNDN);
        mpfr_add(r12095, r12091, r12094, MPFR_RNDN);
        mpfr_set_d(r12096, d1, MPFR_RNDN);
        mpfr_mul(r12097, r12095, r12096, MPFR_RNDN);
        return mpfr_get_d(r12097, MPFR_RNDN);
}

