#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 r8057 = 3;
        float r8058 = 2;
        float r8059 = r;
        float r8060 = r8059 * r8059;
        float r8061 = r8058 / r8060;
        float r8062 = r8057 + r8061;
        float r8063 = 0.125;
        float r8064 = v;
        float r8065 = r8058 * r8064;
        float r8066 = r8057 - r8065;
        float r8067 = r8063 * r8066;
        float r8068 = w;
        float r8069 = r8068 * r8068;
        float r8070 = r8069 * r8059;
        float r8071 = r8070 * r8059;
        float r8072 = r8067 * r8071;
        float r8073 = 1;
        float r8074 = r8073 - r8064;
        float r8075 = r8072 / r8074;
        float r8076 = r8062 - r8075;
        float r8077 = 4.5;
        float r8078 = r8076 - r8077;
        return r8078;
}

double f_id(double v, double w, double r) {
        double r8079 = 3;
        double r8080 = 2;
        double r8081 = r;
        double r8082 = r8081 * r8081;
        double r8083 = r8080 / r8082;
        double r8084 = r8079 + r8083;
        double r8085 = 0.125;
        double r8086 = v;
        double r8087 = r8080 * r8086;
        double r8088 = r8079 - r8087;
        double r8089 = r8085 * r8088;
        double r8090 = w;
        double r8091 = r8090 * r8090;
        double r8092 = r8091 * r8081;
        double r8093 = r8092 * r8081;
        double r8094 = r8089 * r8093;
        double r8095 = 1;
        double r8096 = r8095 - r8086;
        double r8097 = r8094 / r8096;
        double r8098 = r8084 - r8097;
        double r8099 = 4.5;
        double r8100 = r8098 - r8099;
        return r8100;
}


double f_of(float v, float w, float r) {
        float r8101 = 3;
        float r8102 = 2;
        float r8103 = r;
        float r8104 = r8103 * r8103;
        float r8105 = r8102 / r8104;
        float r8106 = r8101 + r8105;
        float r8107 = 1;
        float r8108 = v;
        float r8109 = r8108 * r8108;
        float r8110 = r8107 - r8109;
        float r8111 = r8101 / r8110;
        float r8112 = r8107 / r8108;
        float r8113 = r8112 - r8108;
        float r8114 = r8102 / r8113;
        float r8115 = r8111 - r8114;
        float r8116 = w;
        float r8117 = r8116 * r8103;
        float r8118 = r8117 * r8117;
        float r8119 = 0.125;
        float r8120 = r8118 * r8119;
        float r8121 = r8115 * r8120;
        float r8122 = r8107 + r8108;
        float r8123 = r8121 * r8122;
        float r8124 = r8106 - r8123;
        float r8125 = 4.5;
        float r8126 = r8124 - r8125;
        return r8126;
}

double f_od(double v, double w, double r) {
        double r8127 = 3;
        double r8128 = 2;
        double r8129 = r;
        double r8130 = r8129 * r8129;
        double r8131 = r8128 / r8130;
        double r8132 = r8127 + r8131;
        double r8133 = 1;
        double r8134 = v;
        double r8135 = r8134 * r8134;
        double r8136 = r8133 - r8135;
        double r8137 = r8127 / r8136;
        double r8138 = r8133 / r8134;
        double r8139 = r8138 - r8134;
        double r8140 = r8128 / r8139;
        double r8141 = r8137 - r8140;
        double r8142 = w;
        double r8143 = r8142 * r8129;
        double r8144 = r8143 * r8143;
        double r8145 = 0.125;
        double r8146 = r8144 * r8145;
        double r8147 = r8141 * r8146;
        double r8148 = r8133 + r8134;
        double r8149 = r8147 * r8148;
        double r8150 = r8132 - r8149;
        double r8151 = 4.5;
        double r8152 = r8150 - r8151;
        return r8152;
}

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 r8153, r8154, r8155, r8156, r8157, r8158, r8159, r8160, r8161, r8162, r8163, r8164, r8165, r8166, r8167, r8168, r8169, r8170, r8171, r8172, r8173, r8174;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8153, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8154, "2", 10, MPFR_RNDN);
        mpfr_init(r8155);
        mpfr_init(r8156);
        mpfr_init(r8157);
        mpfr_init(r8158);
        mpfr_init_set_str(r8159, "0.125", 10, MPFR_RNDN);
        mpfr_init(r8160);
        mpfr_init(r8161);
        mpfr_init(r8162);
        mpfr_init(r8163);
        mpfr_init(r8164);
        mpfr_init(r8165);
        mpfr_init(r8166);
        mpfr_init(r8167);
        mpfr_init(r8168);
        mpfr_init_set_str(r8169, "1", 10, MPFR_RNDN);
        mpfr_init(r8170);
        mpfr_init(r8171);
        mpfr_init(r8172);
        mpfr_init_set_str(r8173, "4.5", 10, MPFR_RNDN);
        mpfr_init(r8174);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r8155, r, MPFR_RNDN);
        mpfr_mul(r8156, r8155, r8155, MPFR_RNDN);
        mpfr_div(r8157, r8154, r8156, MPFR_RNDN);
        mpfr_add(r8158, r8153, r8157, MPFR_RNDN);
        ;
        mpfr_set_d(r8160, v, MPFR_RNDN);
        mpfr_mul(r8161, r8154, r8160, MPFR_RNDN);
        mpfr_sub(r8162, r8153, r8161, MPFR_RNDN);
        mpfr_mul(r8163, r8159, r8162, MPFR_RNDN);
        mpfr_set_d(r8164, w, MPFR_RNDN);
        mpfr_mul(r8165, r8164, r8164, MPFR_RNDN);
        mpfr_mul(r8166, r8165, r8155, MPFR_RNDN);
        mpfr_mul(r8167, r8166, r8155, MPFR_RNDN);
        mpfr_mul(r8168, r8163, r8167, MPFR_RNDN);
        ;
        mpfr_sub(r8170, r8169, r8160, MPFR_RNDN);
        mpfr_div(r8171, r8168, r8170, MPFR_RNDN);
        mpfr_sub(r8172, r8158, r8171, MPFR_RNDN);
        ;
        mpfr_sub(r8174, r8172, r8173, MPFR_RNDN);
        return mpfr_get_d(r8174, MPFR_RNDN);
}

static mpfr_t r8175, r8176, r8177, r8178, r8179, r8180, r8181, r8182, r8183, r8184, r8185, r8186, r8187, r8188, r8189, r8190, r8191, r8192, r8193, r8194, r8195, r8196, r8197, r8198, r8199, r8200;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8175, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8176, "2", 10, MPFR_RNDN);
        mpfr_init(r8177);
        mpfr_init(r8178);
        mpfr_init(r8179);
        mpfr_init(r8180);
        mpfr_init_set_str(r8181, "1", 10, MPFR_RNDN);
        mpfr_init(r8182);
        mpfr_init(r8183);
        mpfr_init(r8184);
        mpfr_init(r8185);
        mpfr_init(r8186);
        mpfr_init(r8187);
        mpfr_init(r8188);
        mpfr_init(r8189);
        mpfr_init(r8190);
        mpfr_init(r8191);
        mpfr_init(r8192);
        mpfr_init_set_str(r8193, "0.125", 10, MPFR_RNDN);
        mpfr_init(r8194);
        mpfr_init(r8195);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init(r8198);
        mpfr_init_set_str(r8199, "4.5", 10, MPFR_RNDN);
        mpfr_init(r8200);
}

double f_fm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r8177, r, MPFR_RNDN);
        mpfr_mul(r8178, r8177, r8177, MPFR_RNDN);
        mpfr_div(r8179, r8176, r8178, MPFR_RNDN);
        mpfr_add(r8180, r8175, r8179, MPFR_RNDN);
        ;
        mpfr_set_d(r8182, v, MPFR_RNDN);
        mpfr_mul(r8183, r8182, r8182, MPFR_RNDN);
        mpfr_sub(r8184, r8181, r8183, MPFR_RNDN);
        mpfr_div(r8185, r8175, r8184, MPFR_RNDN);
        mpfr_div(r8186, r8181, r8182, MPFR_RNDN);
        mpfr_sub(r8187, r8186, r8182, MPFR_RNDN);
        mpfr_div(r8188, r8176, r8187, MPFR_RNDN);
        mpfr_sub(r8189, r8185, r8188, MPFR_RNDN);
        mpfr_set_d(r8190, w, MPFR_RNDN);
        mpfr_mul(r8191, r8190, r8177, MPFR_RNDN);
        mpfr_mul(r8192, r8191, r8191, MPFR_RNDN);
        ;
        mpfr_mul(r8194, r8192, r8193, MPFR_RNDN);
        mpfr_mul(r8195, r8189, r8194, MPFR_RNDN);
        mpfr_add(r8196, r8181, r8182, MPFR_RNDN);
        mpfr_mul(r8197, r8195, r8196, MPFR_RNDN);
        mpfr_sub(r8198, r8180, r8197, MPFR_RNDN);
        ;
        mpfr_sub(r8200, r8198, r8199, MPFR_RNDN);
        return mpfr_get_d(r8200, MPFR_RNDN);
}

static mpfr_t r8201, r8202, r8203, r8204, r8205, r8206, r8207, r8208, r8209, r8210, r8211, r8212, r8213, r8214, r8215, r8216, r8217, r8218, r8219, r8220, r8221, r8222, r8223, r8224, r8225, r8226;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8201, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8202, "2", 10, MPFR_RNDN);
        mpfr_init(r8203);
        mpfr_init(r8204);
        mpfr_init(r8205);
        mpfr_init(r8206);
        mpfr_init_set_str(r8207, "1", 10, MPFR_RNDN);
        mpfr_init(r8208);
        mpfr_init(r8209);
        mpfr_init(r8210);
        mpfr_init(r8211);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
        mpfr_init(r8216);
        mpfr_init(r8217);
        mpfr_init(r8218);
        mpfr_init_set_str(r8219, "0.125", 10, MPFR_RNDN);
        mpfr_init(r8220);
        mpfr_init(r8221);
        mpfr_init(r8222);
        mpfr_init(r8223);
        mpfr_init(r8224);
        mpfr_init_set_str(r8225, "4.5", 10, MPFR_RNDN);
        mpfr_init(r8226);
}

double f_dm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r8203, r, MPFR_RNDN);
        mpfr_mul(r8204, r8203, r8203, MPFR_RNDN);
        mpfr_div(r8205, r8202, r8204, MPFR_RNDN);
        mpfr_add(r8206, r8201, r8205, MPFR_RNDN);
        ;
        mpfr_set_d(r8208, v, MPFR_RNDN);
        mpfr_mul(r8209, r8208, r8208, MPFR_RNDN);
        mpfr_sub(r8210, r8207, r8209, MPFR_RNDN);
        mpfr_div(r8211, r8201, r8210, MPFR_RNDN);
        mpfr_div(r8212, r8207, r8208, MPFR_RNDN);
        mpfr_sub(r8213, r8212, r8208, MPFR_RNDN);
        mpfr_div(r8214, r8202, r8213, MPFR_RNDN);
        mpfr_sub(r8215, r8211, r8214, MPFR_RNDN);
        mpfr_set_d(r8216, w, MPFR_RNDN);
        mpfr_mul(r8217, r8216, r8203, MPFR_RNDN);
        mpfr_mul(r8218, r8217, r8217, MPFR_RNDN);
        ;
        mpfr_mul(r8220, r8218, r8219, MPFR_RNDN);
        mpfr_mul(r8221, r8215, r8220, MPFR_RNDN);
        mpfr_add(r8222, r8207, r8208, MPFR_RNDN);
        mpfr_mul(r8223, r8221, r8222, MPFR_RNDN);
        mpfr_sub(r8224, r8206, r8223, MPFR_RNDN);
        ;
        mpfr_sub(r8226, r8224, r8225, MPFR_RNDN);
        return mpfr_get_d(r8226, MPFR_RNDN);
}

