#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 r12025 = d1;
        float r12026 = d2;
        float r12027 = r12025 * r12026;
        float r12028 = d3;
        float r12029 = 5;
        float r12030 = r12028 + r12029;
        float r12031 = r12030 * r12025;
        float r12032 = r12027 + r12031;
        float r12033 = 32;
        float r12034 = r12025 * r12033;
        float r12035 = r12032 + r12034;
        return r12035;
}

double f_id(double d1, double d2, double d3) {
        double r12036 = d1;
        double r12037 = d2;
        double r12038 = r12036 * r12037;
        double r12039 = d3;
        double r12040 = 5;
        double r12041 = r12039 + r12040;
        double r12042 = r12041 * r12036;
        double r12043 = r12038 + r12042;
        double r12044 = 32;
        double r12045 = r12036 * r12044;
        double r12046 = r12043 + r12045;
        return r12046;
}


double f_of(float d1, float d2, float d3) {
        float r12047 = d1;
        float r12048 = d3;
        float r12049 = 5;
        float r12050 = r12048 + r12049;
        float r12051 = d2;
        float r12052 = 32;
        float r12053 = r12051 + r12052;
        float r12054 = r12050 + r12053;
        float r12055 = r12047 * r12054;
        return r12055;
}

double f_od(double d1, double d2, double d3) {
        double r12056 = d1;
        double r12057 = d3;
        double r12058 = 5;
        double r12059 = r12057 + r12058;
        double r12060 = d2;
        double r12061 = 32;
        double r12062 = r12060 + r12061;
        double r12063 = r12059 + r12062;
        double r12064 = r12056 * r12063;
        return r12064;
}

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 r12065, r12066, r12067, r12068, r12069, r12070, r12071, r12072, r12073, r12074, r12075;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12065);
        mpfr_init(r12066);
        mpfr_init(r12067);
        mpfr_init(r12068);
        mpfr_init_set_str(r12069, "5", 10, MPFR_RNDN);
        mpfr_init(r12070);
        mpfr_init(r12071);
        mpfr_init(r12072);
        mpfr_init_set_str(r12073, "32", 10, MPFR_RNDN);
        mpfr_init(r12074);
        mpfr_init(r12075);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r12065, d1, MPFR_RNDN);
        mpfr_set_d(r12066, d2, MPFR_RNDN);
        mpfr_mul(r12067, r12065, r12066, MPFR_RNDN);
        mpfr_set_d(r12068, d3, MPFR_RNDN);
        ;
        mpfr_add(r12070, r12068, r12069, MPFR_RNDN);
        mpfr_mul(r12071, r12070, r12065, MPFR_RNDN);
        mpfr_add(r12072, r12067, r12071, MPFR_RNDN);
        ;
        mpfr_mul(r12074, r12065, r12073, MPFR_RNDN);
        mpfr_add(r12075, r12072, r12074, MPFR_RNDN);
        return mpfr_get_d(r12075, MPFR_RNDN);
}

static mpfr_t r12076, r12077, r12078, r12079, r12080, r12081, r12082, r12083, r12084;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12076);
        mpfr_init(r12077);
        mpfr_init_set_str(r12078, "5", 10, MPFR_RNDN);
        mpfr_init(r12079);
        mpfr_init(r12080);
        mpfr_init_set_str(r12081, "32", 10, MPFR_RNDN);
        mpfr_init(r12082);
        mpfr_init(r12083);
        mpfr_init(r12084);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r12076, d1, MPFR_RNDN);
        mpfr_set_d(r12077, d3, MPFR_RNDN);
        ;
        mpfr_add(r12079, r12077, r12078, MPFR_RNDN);
        mpfr_set_d(r12080, d2, MPFR_RNDN);
        ;
        mpfr_add(r12082, r12080, r12081, MPFR_RNDN);
        mpfr_add(r12083, r12079, r12082, MPFR_RNDN);
        mpfr_mul(r12084, r12076, r12083, MPFR_RNDN);
        return mpfr_get_d(r12084, MPFR_RNDN);
}

static mpfr_t r12085, r12086, r12087, r12088, r12089, r12090, r12091, r12092, r12093;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12085);
        mpfr_init(r12086);
        mpfr_init_set_str(r12087, "5", 10, MPFR_RNDN);
        mpfr_init(r12088);
        mpfr_init(r12089);
        mpfr_init_set_str(r12090, "32", 10, MPFR_RNDN);
        mpfr_init(r12091);
        mpfr_init(r12092);
        mpfr_init(r12093);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r12085, d1, MPFR_RNDN);
        mpfr_set_d(r12086, d3, MPFR_RNDN);
        ;
        mpfr_add(r12088, r12086, r12087, MPFR_RNDN);
        mpfr_set_d(r12089, d2, MPFR_RNDN);
        ;
        mpfr_add(r12091, r12089, r12090, MPFR_RNDN);
        mpfr_add(r12092, r12088, r12091, MPFR_RNDN);
        mpfr_mul(r12093, r12085, r12092, MPFR_RNDN);
        return mpfr_get_d(r12093, MPFR_RNDN);
}

