#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 r7514 = 3.0f;
        float r7515 = 2.0f;
        float r7516 = r;
        float r7517 = r7516 * r7516;
        float r7518 = r7515 / r7517;
        float r7519 = r7514 + r7518;
        float r7520 = 0.125f;
        float r7521 = v;
        float r7522 = r7515 * r7521;
        float r7523 = r7514 - r7522;
        float r7524 = r7520 * r7523;
        float r7525 = w;
        float r7526 = r7525 * r7525;
        float r7527 = r7526 * r7516;
        float r7528 = r7527 * r7516;
        float r7529 = r7524 * r7528;
        float r7530 = 1.0f;
        float r7531 = r7530 - r7521;
        float r7532 = r7529 / r7531;
        float r7533 = r7519 - r7532;
        float r7534 = 4.5f;
        float r7535 = r7533 - r7534;
        return r7535;
}

double f_id(double v, double w, double r) {
        double r7536 = 3.0;
        double r7537 = 2.0;
        double r7538 = r;
        double r7539 = r7538 * r7538;
        double r7540 = r7537 / r7539;
        double r7541 = r7536 + r7540;
        double r7542 = 0.125;
        double r7543 = v;
        double r7544 = r7537 * r7543;
        double r7545 = r7536 - r7544;
        double r7546 = r7542 * r7545;
        double r7547 = w;
        double r7548 = r7547 * r7547;
        double r7549 = r7548 * r7538;
        double r7550 = r7549 * r7538;
        double r7551 = r7546 * r7550;
        double r7552 = 1.0;
        double r7553 = r7552 - r7543;
        double r7554 = r7551 / r7553;
        double r7555 = r7541 - r7554;
        double r7556 = 4.5;
        double r7557 = r7555 - r7556;
        return r7557;
}


double f_of(float v, float w, float r) {
        float r7558 = 3.0f;
        float r7559 = 2.0f;
        float r7560 = r;
        float r7561 = r7560 * r7560;
        float r7562 = r7559 / r7561;
        float r7563 = r7558 + r7562;
        float r7564 = w;
        float r7565 = r7560 * r7564;
        float r7566 = v;
        float r7567 = r7566 * r7559;
        float r7568 = r7558 - r7567;
        float r7569 = 1.0f;
        float r7570 = r7569 - r7566;
        float r7571 = 0.125f;
        float r7572 = r7570 / r7571;
        float r7573 = r7568 / r7572;
        float r7574 = r7573 * r7565;
        float r7575 = r7565 * r7574;
        float r7576 = 4.5f;
        float r7577 = r7575 + r7576;
        float r7578 = r7563 - r7577;
        return r7578;
}

double f_od(double v, double w, double r) {
        double r7579 = 3.0;
        double r7580 = 2.0;
        double r7581 = r;
        double r7582 = r7581 * r7581;
        double r7583 = r7580 / r7582;
        double r7584 = r7579 + r7583;
        double r7585 = w;
        double r7586 = r7581 * r7585;
        double r7587 = v;
        double r7588 = r7587 * r7580;
        double r7589 = r7579 - r7588;
        double r7590 = 1.0;
        double r7591 = r7590 - r7587;
        double r7592 = 0.125;
        double r7593 = r7591 / r7592;
        double r7594 = r7589 / r7593;
        double r7595 = r7594 * r7586;
        double r7596 = r7586 * r7595;
        double r7597 = 4.5;
        double r7598 = r7596 + r7597;
        double r7599 = r7584 - r7598;
        return r7599;
}

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 r7600, r7601, r7602, r7603, r7604, r7605, r7606, r7607, r7608, r7609, r7610, r7611, r7612, r7613, r7614, r7615, r7616, r7617, r7618, r7619, r7620, r7621;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7600, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7601, "2", 10, MPFR_RNDN);
        mpfr_init(r7602);
        mpfr_init(r7603);
        mpfr_init(r7604);
        mpfr_init(r7605);
        mpfr_init_set_str(r7606, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7607);
        mpfr_init(r7608);
        mpfr_init(r7609);
        mpfr_init(r7610);
        mpfr_init(r7611);
        mpfr_init(r7612);
        mpfr_init(r7613);
        mpfr_init(r7614);
        mpfr_init(r7615);
        mpfr_init_set_str(r7616, "1", 10, MPFR_RNDN);
        mpfr_init(r7617);
        mpfr_init(r7618);
        mpfr_init(r7619);
        mpfr_init_set_str(r7620, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7621);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7602, r, MPFR_RNDN);
        mpfr_mul(r7603, r7602, r7602, MPFR_RNDN);
        mpfr_div(r7604, r7601, r7603, MPFR_RNDN);
        mpfr_add(r7605, r7600, r7604, MPFR_RNDN);
        ;
        mpfr_set_d(r7607, v, MPFR_RNDN);
        mpfr_mul(r7608, r7601, r7607, MPFR_RNDN);
        mpfr_sub(r7609, r7600, r7608, MPFR_RNDN);
        mpfr_mul(r7610, r7606, r7609, MPFR_RNDN);
        mpfr_set_d(r7611, w, MPFR_RNDN);
        mpfr_mul(r7612, r7611, r7611, MPFR_RNDN);
        mpfr_mul(r7613, r7612, r7602, MPFR_RNDN);
        mpfr_mul(r7614, r7613, r7602, MPFR_RNDN);
        mpfr_mul(r7615, r7610, r7614, MPFR_RNDN);
        ;
        mpfr_sub(r7617, r7616, r7607, MPFR_RNDN);
        mpfr_div(r7618, r7615, r7617, MPFR_RNDN);
        mpfr_sub(r7619, r7605, r7618, MPFR_RNDN);
        ;
        mpfr_sub(r7621, r7619, r7620, MPFR_RNDN);
        return mpfr_get_d(r7621, MPFR_RNDN);
}

static mpfr_t r7622, r7623, r7624, r7625, r7626, r7627, r7628, r7629, r7630, r7631, r7632, r7633, r7634, r7635, r7636, r7637, r7638, r7639, r7640, r7641, r7642;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7622, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7623, "2", 10, MPFR_RNDN);
        mpfr_init(r7624);
        mpfr_init(r7625);
        mpfr_init(r7626);
        mpfr_init(r7627);
        mpfr_init(r7628);
        mpfr_init(r7629);
        mpfr_init(r7630);
        mpfr_init(r7631);
        mpfr_init(r7632);
        mpfr_init_set_str(r7633, "1", 10, MPFR_RNDN);
        mpfr_init(r7634);
        mpfr_init_set_str(r7635, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7636);
        mpfr_init(r7637);
        mpfr_init(r7638);
        mpfr_init(r7639);
        mpfr_init_set_str(r7640, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7641);
        mpfr_init(r7642);
}

double f_fm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7624, r, MPFR_RNDN);
        mpfr_mul(r7625, r7624, r7624, MPFR_RNDN);
        mpfr_div(r7626, r7623, r7625, MPFR_RNDN);
        mpfr_add(r7627, r7622, r7626, MPFR_RNDN);
        mpfr_set_d(r7628, w, MPFR_RNDN);
        mpfr_mul(r7629, r7624, r7628, MPFR_RNDN);
        mpfr_set_d(r7630, v, MPFR_RNDN);
        mpfr_mul(r7631, r7630, r7623, MPFR_RNDN);
        mpfr_sub(r7632, r7622, r7631, MPFR_RNDN);
        ;
        mpfr_sub(r7634, r7633, r7630, MPFR_RNDN);
        ;
        mpfr_div(r7636, r7634, r7635, MPFR_RNDN);
        mpfr_div(r7637, r7632, r7636, MPFR_RNDN);
        mpfr_mul(r7638, r7637, r7629, MPFR_RNDN);
        mpfr_mul(r7639, r7629, r7638, MPFR_RNDN);
        ;
        mpfr_add(r7641, r7639, r7640, MPFR_RNDN);
        mpfr_sub(r7642, r7627, r7641, MPFR_RNDN);
        return mpfr_get_d(r7642, MPFR_RNDN);
}

static mpfr_t r7643, r7644, r7645, r7646, r7647, r7648, r7649, r7650, r7651, r7652, r7653, r7654, r7655, r7656, r7657, r7658, r7659, r7660, r7661, r7662, r7663;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7643, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7644, "2", 10, MPFR_RNDN);
        mpfr_init(r7645);
        mpfr_init(r7646);
        mpfr_init(r7647);
        mpfr_init(r7648);
        mpfr_init(r7649);
        mpfr_init(r7650);
        mpfr_init(r7651);
        mpfr_init(r7652);
        mpfr_init(r7653);
        mpfr_init_set_str(r7654, "1", 10, MPFR_RNDN);
        mpfr_init(r7655);
        mpfr_init_set_str(r7656, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7657);
        mpfr_init(r7658);
        mpfr_init(r7659);
        mpfr_init(r7660);
        mpfr_init_set_str(r7661, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7662);
        mpfr_init(r7663);
}

double f_dm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7645, r, MPFR_RNDN);
        mpfr_mul(r7646, r7645, r7645, MPFR_RNDN);
        mpfr_div(r7647, r7644, r7646, MPFR_RNDN);
        mpfr_add(r7648, r7643, r7647, MPFR_RNDN);
        mpfr_set_d(r7649, w, MPFR_RNDN);
        mpfr_mul(r7650, r7645, r7649, MPFR_RNDN);
        mpfr_set_d(r7651, v, MPFR_RNDN);
        mpfr_mul(r7652, r7651, r7644, MPFR_RNDN);
        mpfr_sub(r7653, r7643, r7652, MPFR_RNDN);
        ;
        mpfr_sub(r7655, r7654, r7651, MPFR_RNDN);
        ;
        mpfr_div(r7657, r7655, r7656, MPFR_RNDN);
        mpfr_div(r7658, r7653, r7657, MPFR_RNDN);
        mpfr_mul(r7659, r7658, r7650, MPFR_RNDN);
        mpfr_mul(r7660, r7650, r7659, MPFR_RNDN);
        ;
        mpfr_add(r7662, r7660, r7661, MPFR_RNDN);
        mpfr_sub(r7663, r7648, r7662, MPFR_RNDN);
        return mpfr_get_d(r7663, MPFR_RNDN);
}

