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

char *name = "Rosa's TurbineBenchmark";

double f_if(float v, float w, float r) {
        float r18101 = 3.0f;
        float r18102 = 2.0f;
        float r18103 = r;
        float r18104 = r18103 * r18103;
        float r18105 = r18102 / r18104;
        float r18106 = r18101 + r18105;
        float r18107 = 0.125f;
        float r18108 = v;
        float r18109 = r18102 * r18108;
        float r18110 = r18101 - r18109;
        float r18111 = r18107 * r18110;
        float r18112 = w;
        float r18113 = r18112 * r18112;
        float r18114 = r18113 * r18103;
        float r18115 = r18114 * r18103;
        float r18116 = r18111 * r18115;
        float r18117 = 1.0f;
        float r18118 = r18117 - r18108;
        float r18119 = r18116 / r18118;
        float r18120 = r18106 - r18119;
        float r18121 = 4.5f;
        float r18122 = r18120 - r18121;
        return r18122;
}

double f_id(double v, double w, double r) {
        double r18123 = 3.0;
        double r18124 = 2.0;
        double r18125 = r;
        double r18126 = r18125 * r18125;
        double r18127 = r18124 / r18126;
        double r18128 = r18123 + r18127;
        double r18129 = 0.125;
        double r18130 = v;
        double r18131 = r18124 * r18130;
        double r18132 = r18123 - r18131;
        double r18133 = r18129 * r18132;
        double r18134 = w;
        double r18135 = r18134 * r18134;
        double r18136 = r18135 * r18125;
        double r18137 = r18136 * r18125;
        double r18138 = r18133 * r18137;
        double r18139 = 1.0;
        double r18140 = r18139 - r18130;
        double r18141 = r18138 / r18140;
        double r18142 = r18128 - r18141;
        double r18143 = 4.5;
        double r18144 = r18142 - r18143;
        return r18144;
}


double f_of(float v, float w, float r) {
        float r18145 = 2.0f;
        float r18146 = r;
        float r18147 = r18145 / r18146;
        float r18148 = r18147 / r18146;
        float r18149 = 4.5f;
        float r18150 = 3.0f;
        float r18151 = r18149 - r18150;
        float r18152 = r18148 - r18151;
        float r18153 = w;
        float r18154 = r18153 * r18146;
        float r18155 = r18154 * r18154;
        float r18156 = 0.125f;
        float r18157 = 1.0f;
        float r18158 = v;
        float r18159 = r18157 - r18158;
        float r18160 = r18156 / r18159;
        float r18161 = r18158 + r18158;
        float r18162 = r18150 - r18161;
        float r18163 = r18160 * r18162;
        float r18164 = r18163 * (r18163 * r18163);
        float r18165 = cbrt(r18164);
        float r18166 = r18155 * r18165;
        float r18167 = r18152 - r18166;
        return r18167;
}

double f_od(double v, double w, double r) {
        double r18168 = 2.0;
        double r18169 = r;
        double r18170 = r18168 / r18169;
        double r18171 = r18170 / r18169;
        double r18172 = 4.5;
        double r18173 = 3.0;
        double r18174 = r18172 - r18173;
        double r18175 = r18171 - r18174;
        double r18176 = w;
        double r18177 = r18176 * r18169;
        double r18178 = r18177 * r18177;
        double r18179 = 0.125;
        double r18180 = 1.0;
        double r18181 = v;
        double r18182 = r18180 - r18181;
        double r18183 = r18179 / r18182;
        double r18184 = r18181 + r18181;
        double r18185 = r18173 - r18184;
        double r18186 = r18183 * r18185;
        double r18187 = r18186 * (r18186 * r18186);
        double r18188 = cbrt(r18187);
        double r18189 = r18178 * r18188;
        double r18190 = r18175 - r18189;
        return r18190;
}

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 r18191, r18192, r18193, r18194, r18195, r18196, r18197, r18198, r18199, r18200, r18201, r18202, r18203, r18204, r18205, r18206, r18207, r18208, r18209, r18210, r18211, r18212;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18191, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r18192, "2", 10, MPFR_RNDN);
        mpfr_init(r18193);
        mpfr_init(r18194);
        mpfr_init(r18195);
        mpfr_init(r18196);
        mpfr_init_set_str(r18197, "0.125", 10, MPFR_RNDN);
        mpfr_init(r18198);
        mpfr_init(r18199);
        mpfr_init(r18200);
        mpfr_init(r18201);
        mpfr_init(r18202);
        mpfr_init(r18203);
        mpfr_init(r18204);
        mpfr_init(r18205);
        mpfr_init(r18206);
        mpfr_init_set_str(r18207, "1", 10, MPFR_RNDN);
        mpfr_init(r18208);
        mpfr_init(r18209);
        mpfr_init(r18210);
        mpfr_init_set_str(r18211, "4.5", 10, MPFR_RNDN);
        mpfr_init(r18212);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r18193, r, MPFR_RNDN);
        mpfr_mul(r18194, r18193, r18193, MPFR_RNDN);
        mpfr_div(r18195, r18192, r18194, MPFR_RNDN);
        mpfr_add(r18196, r18191, r18195, MPFR_RNDN);
        ;
        mpfr_set_d(r18198, v, MPFR_RNDN);
        mpfr_mul(r18199, r18192, r18198, MPFR_RNDN);
        mpfr_sub(r18200, r18191, r18199, MPFR_RNDN);
        mpfr_mul(r18201, r18197, r18200, MPFR_RNDN);
        mpfr_set_d(r18202, w, MPFR_RNDN);
        mpfr_mul(r18203, r18202, r18202, MPFR_RNDN);
        mpfr_mul(r18204, r18203, r18193, MPFR_RNDN);
        mpfr_mul(r18205, r18204, r18193, MPFR_RNDN);
        mpfr_mul(r18206, r18201, r18205, MPFR_RNDN);
        ;
        mpfr_sub(r18208, r18207, r18198, MPFR_RNDN);
        mpfr_div(r18209, r18206, r18208, MPFR_RNDN);
        mpfr_sub(r18210, r18196, r18209, MPFR_RNDN);
        ;
        mpfr_sub(r18212, r18210, r18211, MPFR_RNDN);
        return mpfr_get_d(r18212, MPFR_RNDN);
}

static mpfr_t r18213, r18214, r18215, r18216, r18217, r18218, r18219, r18220, r18221, r18222, r18223, r18224, r18225, r18226, r18227, r18228, r18229, r18230, r18231, r18232, r18233, r18234, r18235;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18213, "2", 10, MPFR_RNDN);
        mpfr_init(r18214);
        mpfr_init(r18215);
        mpfr_init(r18216);
        mpfr_init_set_str(r18217, "4.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18218, "3", 10, MPFR_RNDN);
        mpfr_init(r18219);
        mpfr_init(r18220);
        mpfr_init(r18221);
        mpfr_init(r18222);
        mpfr_init(r18223);
        mpfr_init_set_str(r18224, "0.125", 10, MPFR_RNDN);
        mpfr_init_set_str(r18225, "1", 10, MPFR_RNDN);
        mpfr_init(r18226);
        mpfr_init(r18227);
        mpfr_init(r18228);
        mpfr_init(r18229);
        mpfr_init(r18230);
        mpfr_init(r18231);
        mpfr_init(r18232);
        mpfr_init(r18233);
        mpfr_init(r18234);
        mpfr_init(r18235);
}

double f_fm(double v, double w, double r) {
        ;
        mpfr_set_d(r18214, r, MPFR_RNDN);
        mpfr_div(r18215, r18213, r18214, MPFR_RNDN);
        mpfr_div(r18216, r18215, r18214, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r18219, r18217, r18218, MPFR_RNDN);
        mpfr_sub(r18220, r18216, r18219, MPFR_RNDN);
        mpfr_set_d(r18221, w, MPFR_RNDN);
        mpfr_mul(r18222, r18221, r18214, MPFR_RNDN);
        mpfr_sqr(r18223, r18222, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18226, v, MPFR_RNDN);
        mpfr_sub(r18227, r18225, r18226, MPFR_RNDN);
        mpfr_div(r18228, r18224, r18227, MPFR_RNDN);
        mpfr_add(r18229, r18226, r18226, MPFR_RNDN);
        mpfr_sub(r18230, r18218, r18229, MPFR_RNDN);
        mpfr_mul(r18231, r18228, r18230, MPFR_RNDN);
        mpfr_mul(r18232, r18231, r18231, MPFR_RNDN); mpfr_mul(r18232, r18232, r18231, MPFR_RNDN);
        mpfr_cbrt(r18233, r18232, MPFR_RNDN);
        mpfr_mul(r18234, r18223, r18233, MPFR_RNDN);
        mpfr_sub(r18235, r18220, r18234, MPFR_RNDN);
        return mpfr_get_d(r18235, MPFR_RNDN);
}

static mpfr_t r18236, r18237, r18238, r18239, r18240, r18241, r18242, r18243, r18244, r18245, r18246, r18247, r18248, r18249, r18250, r18251, r18252, r18253, r18254, r18255, r18256, r18257, r18258;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18236, "2", 10, MPFR_RNDN);
        mpfr_init(r18237);
        mpfr_init(r18238);
        mpfr_init(r18239);
        mpfr_init_set_str(r18240, "4.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18241, "3", 10, MPFR_RNDN);
        mpfr_init(r18242);
        mpfr_init(r18243);
        mpfr_init(r18244);
        mpfr_init(r18245);
        mpfr_init(r18246);
        mpfr_init_set_str(r18247, "0.125", 10, MPFR_RNDN);
        mpfr_init_set_str(r18248, "1", 10, MPFR_RNDN);
        mpfr_init(r18249);
        mpfr_init(r18250);
        mpfr_init(r18251);
        mpfr_init(r18252);
        mpfr_init(r18253);
        mpfr_init(r18254);
        mpfr_init(r18255);
        mpfr_init(r18256);
        mpfr_init(r18257);
        mpfr_init(r18258);
}

double f_dm(double v, double w, double r) {
        ;
        mpfr_set_d(r18237, r, MPFR_RNDN);
        mpfr_div(r18238, r18236, r18237, MPFR_RNDN);
        mpfr_div(r18239, r18238, r18237, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r18242, r18240, r18241, MPFR_RNDN);
        mpfr_sub(r18243, r18239, r18242, MPFR_RNDN);
        mpfr_set_d(r18244, w, MPFR_RNDN);
        mpfr_mul(r18245, r18244, r18237, MPFR_RNDN);
        mpfr_sqr(r18246, r18245, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18249, v, MPFR_RNDN);
        mpfr_sub(r18250, r18248, r18249, MPFR_RNDN);
        mpfr_div(r18251, r18247, r18250, MPFR_RNDN);
        mpfr_add(r18252, r18249, r18249, MPFR_RNDN);
        mpfr_sub(r18253, r18241, r18252, MPFR_RNDN);
        mpfr_mul(r18254, r18251, r18253, MPFR_RNDN);
        mpfr_mul(r18255, r18254, r18254, MPFR_RNDN); mpfr_mul(r18255, r18255, r18254, MPFR_RNDN);
        mpfr_cbrt(r18256, r18255, MPFR_RNDN);
        mpfr_mul(r18257, r18246, r18256, MPFR_RNDN);
        mpfr_sub(r18258, r18243, r18257, MPFR_RNDN);
        return mpfr_get_d(r18258, MPFR_RNDN);
}

