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

double f_id(double v, double w, double r) {
        double r7531 = 3.0;
        double r7532 = 2.0;
        double r7533 = r;
        double r7534 = r7533 * r7533;
        double r7535 = r7532 / r7534;
        double r7536 = r7531 + r7535;
        double r7537 = 0.125;
        double r7538 = v;
        double r7539 = r7532 * r7538;
        double r7540 = r7531 - r7539;
        double r7541 = r7537 * r7540;
        double r7542 = w;
        double r7543 = r7542 * r7542;
        double r7544 = r7543 * r7533;
        double r7545 = r7544 * r7533;
        double r7546 = r7541 * r7545;
        double r7547 = 1.0;
        double r7548 = r7547 - r7538;
        double r7549 = r7546 / r7548;
        double r7550 = r7536 - r7549;
        double r7551 = 4.5;
        double r7552 = r7550 - r7551;
        return r7552;
}


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

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

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

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

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

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7619, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7620, "2", 10, MPFR_RNDN);
        mpfr_init(r7621);
        mpfr_init(r7622);
        mpfr_init(r7623);
        mpfr_init(r7624);
        mpfr_init_set_str(r7625, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7626);
        mpfr_init(r7627);
        mpfr_init(r7628);
        mpfr_init(r7629);
        mpfr_init_set_str(r7630, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7631);
        mpfr_init_set_str(r7632, "1", 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);
}

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

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

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

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

