#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 r7536 = 3.0f;
        float r7537 = 2.0f;
        float r7538 = r;
        float r7539 = r7538 * r7538;
        float r7540 = r7537 / r7539;
        float r7541 = r7536 + r7540;
        float r7542 = 0.125f;
        float r7543 = v;
        float r7544 = r7537 * r7543;
        float r7545 = r7536 - r7544;
        float r7546 = r7542 * r7545;
        float r7547 = w;
        float r7548 = r7547 * r7547;
        float r7549 = r7548 * r7538;
        float r7550 = r7549 * r7538;
        float r7551 = r7546 * r7550;
        float r7552 = 1.0f;
        float r7553 = r7552 - r7543;
        float r7554 = r7551 / r7553;
        float r7555 = r7541 - r7554;
        float r7556 = 4.5f;
        float r7557 = r7555 - r7556;
        return r7557;
}

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


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

double f_od(double v, double w, double r) {
        double r7603 = 3.0;
        double r7604 = 2.0;
        double r7605 = r;
        double r7606 = r7605 * r7605;
        double r7607 = r7604 / r7606;
        double r7608 = r7603 + r7607;
        double r7609 = 4.5;
        double r7610 = r7608 - r7609;
        double r7611 = v;
        double r7612 = r7611 * r7604;
        double r7613 = r7603 - r7612;
        double r7614 = 0.125;
        double r7615 = r7613 * r7614;
        double r7616 = 1.0;
        double r7617 = w;
        double r7618 = r7616 / r7617;
        double r7619 = r7618 / r7605;
        double r7620 = r7616 - r7611;
        double r7621 = r7605 * r7617;
        double r7622 = r7620 / r7621;
        double r7623 = r7619 * r7622;
        double r7624 = r7615 / r7623;
        double r7625 = r7610 - r7624;
        return r7625;
}

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 r7626, r7627, r7628, r7629, r7630, r7631, r7632, r7633, r7634, r7635, r7636, r7637, r7638, r7639, r7640, r7641, r7642, r7643, r7644, r7645, r7646, r7647;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7626, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7627, "2", 10, MPFR_RNDN);
        mpfr_init(r7628);
        mpfr_init(r7629);
        mpfr_init(r7630);
        mpfr_init(r7631);
        mpfr_init_set_str(r7632, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7633);
        mpfr_init(r7634);
        mpfr_init(r7635);
        mpfr_init(r7636);
        mpfr_init(r7637);
        mpfr_init(r7638);
        mpfr_init(r7639);
        mpfr_init(r7640);
        mpfr_init(r7641);
        mpfr_init_set_str(r7642, "1", 10, MPFR_RNDN);
        mpfr_init(r7643);
        mpfr_init(r7644);
        mpfr_init(r7645);
        mpfr_init_set_str(r7646, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7647);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7628, r, MPFR_RNDN);
        mpfr_mul(r7629, r7628, r7628, MPFR_RNDN);
        mpfr_div(r7630, r7627, r7629, MPFR_RNDN);
        mpfr_add(r7631, r7626, r7630, MPFR_RNDN);
        ;
        mpfr_set_d(r7633, v, MPFR_RNDN);
        mpfr_mul(r7634, r7627, r7633, MPFR_RNDN);
        mpfr_sub(r7635, r7626, r7634, MPFR_RNDN);
        mpfr_mul(r7636, r7632, r7635, MPFR_RNDN);
        mpfr_set_d(r7637, w, MPFR_RNDN);
        mpfr_mul(r7638, r7637, r7637, MPFR_RNDN);
        mpfr_mul(r7639, r7638, r7628, MPFR_RNDN);
        mpfr_mul(r7640, r7639, r7628, MPFR_RNDN);
        mpfr_mul(r7641, r7636, r7640, MPFR_RNDN);
        ;
        mpfr_sub(r7643, r7642, r7633, MPFR_RNDN);
        mpfr_div(r7644, r7641, r7643, MPFR_RNDN);
        mpfr_sub(r7645, r7631, r7644, MPFR_RNDN);
        ;
        mpfr_sub(r7647, r7645, r7646, MPFR_RNDN);
        return mpfr_get_d(r7647, MPFR_RNDN);
}

static mpfr_t r7648, r7649, r7650, r7651, r7652, r7653, r7654, r7655, r7656, r7657, r7658, r7659, r7660, r7661, r7662, r7663, r7664, r7665, r7666, r7667, r7668, r7669, r7670;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7648, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7649, "2", 10, MPFR_RNDN);
        mpfr_init(r7650);
        mpfr_init(r7651);
        mpfr_init(r7652);
        mpfr_init(r7653);
        mpfr_init_set_str(r7654, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7655);
        mpfr_init(r7656);
        mpfr_init(r7657);
        mpfr_init(r7658);
        mpfr_init_set_str(r7659, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7660);
        mpfr_init_set_str(r7661, "1", 10, MPFR_RNDN);
        mpfr_init(r7662);
        mpfr_init(r7663);
        mpfr_init(r7664);
        mpfr_init(r7665);
        mpfr_init(r7666);
        mpfr_init(r7667);
        mpfr_init(r7668);
        mpfr_init(r7669);
        mpfr_init(r7670);
}

double f_fm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7650, r, MPFR_RNDN);
        mpfr_mul(r7651, r7650, r7650, MPFR_RNDN);
        mpfr_div(r7652, r7649, r7651, MPFR_RNDN);
        mpfr_add(r7653, r7648, r7652, MPFR_RNDN);
        ;
        mpfr_sub(r7655, r7653, r7654, MPFR_RNDN);
        mpfr_set_d(r7656, v, MPFR_RNDN);
        mpfr_mul(r7657, r7656, r7649, MPFR_RNDN);
        mpfr_sub(r7658, r7648, r7657, MPFR_RNDN);
        ;
        mpfr_mul(r7660, r7658, r7659, MPFR_RNDN);
        ;
        mpfr_set_d(r7662, w, MPFR_RNDN);
        mpfr_div(r7663, r7661, r7662, MPFR_RNDN);
        mpfr_div(r7664, r7663, r7650, MPFR_RNDN);
        mpfr_sub(r7665, r7661, r7656, MPFR_RNDN);
        mpfr_mul(r7666, r7650, r7662, MPFR_RNDN);
        mpfr_div(r7667, r7665, r7666, MPFR_RNDN);
        mpfr_mul(r7668, r7664, r7667, MPFR_RNDN);
        mpfr_div(r7669, r7660, r7668, MPFR_RNDN);
        mpfr_sub(r7670, r7655, r7669, MPFR_RNDN);
        return mpfr_get_d(r7670, MPFR_RNDN);
}

static mpfr_t r7671, r7672, r7673, r7674, r7675, r7676, r7677, r7678, r7679, r7680, r7681, r7682, r7683, r7684, r7685, r7686, r7687, r7688, r7689, r7690, r7691, r7692, r7693;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7671, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7672, "2", 10, MPFR_RNDN);
        mpfr_init(r7673);
        mpfr_init(r7674);
        mpfr_init(r7675);
        mpfr_init(r7676);
        mpfr_init_set_str(r7677, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7678);
        mpfr_init(r7679);
        mpfr_init(r7680);
        mpfr_init(r7681);
        mpfr_init_set_str(r7682, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7683);
        mpfr_init_set_str(r7684, "1", 10, MPFR_RNDN);
        mpfr_init(r7685);
        mpfr_init(r7686);
        mpfr_init(r7687);
        mpfr_init(r7688);
        mpfr_init(r7689);
        mpfr_init(r7690);
        mpfr_init(r7691);
        mpfr_init(r7692);
        mpfr_init(r7693);
}

double f_dm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7673, r, MPFR_RNDN);
        mpfr_mul(r7674, r7673, r7673, MPFR_RNDN);
        mpfr_div(r7675, r7672, r7674, MPFR_RNDN);
        mpfr_add(r7676, r7671, r7675, MPFR_RNDN);
        ;
        mpfr_sub(r7678, r7676, r7677, MPFR_RNDN);
        mpfr_set_d(r7679, v, MPFR_RNDN);
        mpfr_mul(r7680, r7679, r7672, MPFR_RNDN);
        mpfr_sub(r7681, r7671, r7680, MPFR_RNDN);
        ;
        mpfr_mul(r7683, r7681, r7682, MPFR_RNDN);
        ;
        mpfr_set_d(r7685, w, MPFR_RNDN);
        mpfr_div(r7686, r7684, r7685, MPFR_RNDN);
        mpfr_div(r7687, r7686, r7673, MPFR_RNDN);
        mpfr_sub(r7688, r7684, r7679, MPFR_RNDN);
        mpfr_mul(r7689, r7673, r7685, MPFR_RNDN);
        mpfr_div(r7690, r7688, r7689, MPFR_RNDN);
        mpfr_mul(r7691, r7687, r7690, MPFR_RNDN);
        mpfr_div(r7692, r7683, r7691, MPFR_RNDN);
        mpfr_sub(r7693, r7678, r7692, MPFR_RNDN);
        return mpfr_get_d(r7693, MPFR_RNDN);
}

