#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 r20490 = 3;
        float r20491 = 2;
        float r20492 = r;
        float r20493 = r20492 * r20492;
        float r20494 = r20491 / r20493;
        float r20495 = r20490 + r20494;
        float r20496 = 0.125;
        float r20497 = v;
        float r20498 = r20491 * r20497;
        float r20499 = r20490 - r20498;
        float r20500 = r20496 * r20499;
        float r20501 = w;
        float r20502 = r20501 * r20501;
        float r20503 = r20502 * r20492;
        float r20504 = r20503 * r20492;
        float r20505 = r20500 * r20504;
        float r20506 = 1;
        float r20507 = r20506 - r20497;
        float r20508 = r20505 / r20507;
        float r20509 = r20495 - r20508;
        float r20510 = 4.5;
        float r20511 = r20509 - r20510;
        return r20511;
}

double f_id(double v, double w, double r) {
        double r20512 = 3;
        double r20513 = 2;
        double r20514 = r;
        double r20515 = r20514 * r20514;
        double r20516 = r20513 / r20515;
        double r20517 = r20512 + r20516;
        double r20518 = 0.125;
        double r20519 = v;
        double r20520 = r20513 * r20519;
        double r20521 = r20512 - r20520;
        double r20522 = r20518 * r20521;
        double r20523 = w;
        double r20524 = r20523 * r20523;
        double r20525 = r20524 * r20514;
        double r20526 = r20525 * r20514;
        double r20527 = r20522 * r20526;
        double r20528 = 1;
        double r20529 = r20528 - r20519;
        double r20530 = r20527 / r20529;
        double r20531 = r20517 - r20530;
        double r20532 = 4.5;
        double r20533 = r20531 - r20532;
        return r20533;
}


double f_of(float v, float w, float r) {
        float r20534 = v;
        float r20535 = -1.1343364695083283e+17;
        bool r20536 = r20534 <= r20535;
        float r20537 = 2;
        float r20538 = r;
        float r20539 = r20538 * r20538;
        float r20540 = r20537 / r20539;
        float r20541 = 3;
        float r20542 = 4.5;
        float r20543 = r20541 - r20542;
        float r20544 = r20540 + r20543;
        float r20545 = w;
        float r20546 = r20545 * r20538;
        float r20547 = r20546 * r20546;
        float r20548 = 0.25;
        float r20549 = r20547 * r20548;
        float r20550 = r20547 / r20534;
        float r20551 = 0.125;
        float r20552 = r20551 / r20534;
        float r20553 = r20551 + r20552;
        float r20554 = r20550 * r20553;
        float r20555 = r20549 - r20554;
        float r20556 = r20544 - r20555;
        float r20557 = 0.018744434898522296;
        bool r20558 = r20534 <= r20557;
        float r20559 = r20541 + r20540;
        float r20560 = r20538 * r20545;
        float r20561 = r20560 * r20560;
        float r20562 = r20551 * r20561;
        float r20563 = 1;
        float r20564 = r20534 * r20534;
        float r20565 = r20563 - r20564;
        float r20566 = cbrt(r20565);
        float r20567 = r20566 * r20566;
        float r20568 = r20534 + r20534;
        float r20569 = r20541 - r20568;
        float r20570 = cbrt(r20569);
        float r20571 = r20570 * r20570;
        float r20572 = r20567 / r20571;
        float r20573 = r20566 / r20570;
        float r20574 = r20572 * r20573;
        float r20575 = r20562 / r20574;
        float r20576 = r20563 + r20534;
        float r20577 = r20575 * r20576;
        float r20578 = r20559 - r20577;
        float r20579 = r20578 - r20542;
        float r20580 = r20558 ? r20579 : r20556;
        float r20581 = r20536 ? r20556 : r20580;
        return r20581;
}

double f_od(double v, double w, double r) {
        double r20582 = v;
        double r20583 = -1.1343364695083283e+17;
        bool r20584 = r20582 <= r20583;
        double r20585 = 2;
        double r20586 = r;
        double r20587 = r20586 * r20586;
        double r20588 = r20585 / r20587;
        double r20589 = 3;
        double r20590 = 4.5;
        double r20591 = r20589 - r20590;
        double r20592 = r20588 + r20591;
        double r20593 = w;
        double r20594 = r20593 * r20586;
        double r20595 = r20594 * r20594;
        double r20596 = 0.25;
        double r20597 = r20595 * r20596;
        double r20598 = r20595 / r20582;
        double r20599 = 0.125;
        double r20600 = r20599 / r20582;
        double r20601 = r20599 + r20600;
        double r20602 = r20598 * r20601;
        double r20603 = r20597 - r20602;
        double r20604 = r20592 - r20603;
        double r20605 = 0.018744434898522296;
        bool r20606 = r20582 <= r20605;
        double r20607 = r20589 + r20588;
        double r20608 = r20586 * r20593;
        double r20609 = r20608 * r20608;
        double r20610 = r20599 * r20609;
        double r20611 = 1;
        double r20612 = r20582 * r20582;
        double r20613 = r20611 - r20612;
        double r20614 = cbrt(r20613);
        double r20615 = r20614 * r20614;
        double r20616 = r20582 + r20582;
        double r20617 = r20589 - r20616;
        double r20618 = cbrt(r20617);
        double r20619 = r20618 * r20618;
        double r20620 = r20615 / r20619;
        double r20621 = r20614 / r20618;
        double r20622 = r20620 * r20621;
        double r20623 = r20610 / r20622;
        double r20624 = r20611 + r20582;
        double r20625 = r20623 * r20624;
        double r20626 = r20607 - r20625;
        double r20627 = r20626 - r20590;
        double r20628 = r20606 ? r20627 : r20604;
        double r20629 = r20584 ? r20604 : r20628;
        return r20629;
}

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 r20630, r20631, r20632, r20633, r20634, r20635, r20636, r20637, r20638, r20639, r20640, r20641, r20642, r20643, r20644, r20645, r20646, r20647, r20648, r20649, r20650, r20651;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r20630, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20631, "2", 10, MPFR_RNDN);
        mpfr_init(r20632);
        mpfr_init(r20633);
        mpfr_init(r20634);
        mpfr_init(r20635);
        mpfr_init_set_str(r20636, "0.125", 10, MPFR_RNDN);
        mpfr_init(r20637);
        mpfr_init(r20638);
        mpfr_init(r20639);
        mpfr_init(r20640);
        mpfr_init(r20641);
        mpfr_init(r20642);
        mpfr_init(r20643);
        mpfr_init(r20644);
        mpfr_init(r20645);
        mpfr_init_set_str(r20646, "1", 10, MPFR_RNDN);
        mpfr_init(r20647);
        mpfr_init(r20648);
        mpfr_init(r20649);
        mpfr_init_set_str(r20650, "4.5", 10, MPFR_RNDN);
        mpfr_init(r20651);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r20632, r, MPFR_RNDN);
        mpfr_mul(r20633, r20632, r20632, MPFR_RNDN);
        mpfr_div(r20634, r20631, r20633, MPFR_RNDN);
        mpfr_add(r20635, r20630, r20634, MPFR_RNDN);
        ;
        mpfr_set_d(r20637, v, MPFR_RNDN);
        mpfr_mul(r20638, r20631, r20637, MPFR_RNDN);
        mpfr_sub(r20639, r20630, r20638, MPFR_RNDN);
        mpfr_mul(r20640, r20636, r20639, MPFR_RNDN);
        mpfr_set_d(r20641, w, MPFR_RNDN);
        mpfr_mul(r20642, r20641, r20641, MPFR_RNDN);
        mpfr_mul(r20643, r20642, r20632, MPFR_RNDN);
        mpfr_mul(r20644, r20643, r20632, MPFR_RNDN);
        mpfr_mul(r20645, r20640, r20644, MPFR_RNDN);
        ;
        mpfr_sub(r20647, r20646, r20637, MPFR_RNDN);
        mpfr_div(r20648, r20645, r20647, MPFR_RNDN);
        mpfr_sub(r20649, r20635, r20648, MPFR_RNDN);
        ;
        mpfr_sub(r20651, r20649, r20650, MPFR_RNDN);
        return mpfr_get_d(r20651, MPFR_RNDN);
}

static mpfr_t r20652, r20653, r20654, r20655, r20656, r20657, r20658, r20659, r20660, r20661, r20662, r20663, r20664, r20665, r20666, r20667, r20668, r20669, r20670, r20671, r20672, r20673, r20674, r20675, r20676, r20677, r20678, r20679, r20680, r20681, r20682, r20683, r20684, r20685, r20686, r20687, r20688, r20689, r20690, r20691, r20692, r20693, r20694, r20695, r20696, r20697, r20698, r20699;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r20652);
        mpfr_init_set_str(r20653, "-1.1343364695083283e+17", 10, MPFR_RNDN);
        mpfr_init(r20654);
        mpfr_init_set_str(r20655, "2", 10, MPFR_RNDN);
        mpfr_init(r20656);
        mpfr_init(r20657);
        mpfr_init(r20658);
        mpfr_init_set_str(r20659, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20660, "4.5", 10, MPFR_RNDN);
        mpfr_init(r20661);
        mpfr_init(r20662);
        mpfr_init(r20663);
        mpfr_init(r20664);
        mpfr_init(r20665);
        mpfr_init_set_str(r20666, "0.25", 10, MPFR_RNDN);
        mpfr_init(r20667);
        mpfr_init(r20668);
        mpfr_init_set_str(r20669, "0.125", 10, MPFR_RNDN);
        mpfr_init(r20670);
        mpfr_init(r20671);
        mpfr_init(r20672);
        mpfr_init(r20673);
        mpfr_init(r20674);
        mpfr_init_set_str(r20675, "0.018744434898522296", 10, MPFR_RNDN);
        mpfr_init(r20676);
        mpfr_init(r20677);
        mpfr_init(r20678);
        mpfr_init(r20679);
        mpfr_init(r20680);
        mpfr_init_set_str(r20681, "1", 10, MPFR_RNDN);
        mpfr_init(r20682);
        mpfr_init(r20683);
        mpfr_init(r20684);
        mpfr_init(r20685);
        mpfr_init(r20686);
        mpfr_init(r20687);
        mpfr_init(r20688);
        mpfr_init(r20689);
        mpfr_init(r20690);
        mpfr_init(r20691);
        mpfr_init(r20692);
        mpfr_init(r20693);
        mpfr_init(r20694);
        mpfr_init(r20695);
        mpfr_init(r20696);
        mpfr_init(r20697);
        mpfr_init(r20698);
        mpfr_init(r20699);
}

double f_fm(double v, double w, double r) {
        mpfr_set_d(r20652, v, MPFR_RNDN);
        ;
        mpfr_set_si(r20654, mpfr_cmp(r20652, r20653) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20656, r, MPFR_RNDN);
        mpfr_mul(r20657, r20656, r20656, MPFR_RNDN);
        mpfr_div(r20658, r20655, r20657, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r20661, r20659, r20660, MPFR_RNDN);
        mpfr_add(r20662, r20658, r20661, MPFR_RNDN);
        mpfr_set_d(r20663, w, MPFR_RNDN);
        mpfr_mul(r20664, r20663, r20656, MPFR_RNDN);
        mpfr_mul(r20665, r20664, r20664, MPFR_RNDN);
        ;
        mpfr_mul(r20667, r20665, r20666, MPFR_RNDN);
        mpfr_div(r20668, r20665, r20652, MPFR_RNDN);
        ;
        mpfr_div(r20670, r20669, r20652, MPFR_RNDN);
        mpfr_add(r20671, r20669, r20670, MPFR_RNDN);
        mpfr_mul(r20672, r20668, r20671, MPFR_RNDN);
        mpfr_sub(r20673, r20667, r20672, MPFR_RNDN);
        mpfr_sub(r20674, r20662, r20673, MPFR_RNDN);
        ;
        mpfr_set_si(r20676, mpfr_cmp(r20652, r20675) <= 0, MPFR_RNDN);
        mpfr_add(r20677, r20659, r20658, MPFR_RNDN);
        mpfr_mul(r20678, r20656, r20663, MPFR_RNDN);
        mpfr_mul(r20679, r20678, r20678, MPFR_RNDN);
        mpfr_mul(r20680, r20669, r20679, MPFR_RNDN);
        ;
        mpfr_mul(r20682, r20652, r20652, MPFR_RNDN);
        mpfr_sub(r20683, r20681, r20682, MPFR_RNDN);
        mpfr_cbrt(r20684, r20683, MPFR_RNDN);
        mpfr_mul(r20685, r20684, r20684, MPFR_RNDN);
        mpfr_add(r20686, r20652, r20652, MPFR_RNDN);
        mpfr_sub(r20687, r20659, r20686, MPFR_RNDN);
        mpfr_cbrt(r20688, r20687, MPFR_RNDN);
        mpfr_mul(r20689, r20688, r20688, MPFR_RNDN);
        mpfr_div(r20690, r20685, r20689, MPFR_RNDN);
        mpfr_div(r20691, r20684, r20688, MPFR_RNDN);
        mpfr_mul(r20692, r20690, r20691, MPFR_RNDN);
        mpfr_div(r20693, r20680, r20692, MPFR_RNDN);
        mpfr_add(r20694, r20681, r20652, MPFR_RNDN);
        mpfr_mul(r20695, r20693, r20694, MPFR_RNDN);
        mpfr_sub(r20696, r20677, r20695, MPFR_RNDN);
        mpfr_sub(r20697, r20696, r20660, MPFR_RNDN);
        if (mpfr_get_si(r20676, MPFR_RNDN)) { mpfr_set(r20698, r20697, MPFR_RNDN); } else { mpfr_set(r20698, r20674, MPFR_RNDN); };
        if (mpfr_get_si(r20654, MPFR_RNDN)) { mpfr_set(r20699, r20674, MPFR_RNDN); } else { mpfr_set(r20699, r20698, MPFR_RNDN); };
        return mpfr_get_d(r20699, MPFR_RNDN);
}

static mpfr_t r20700, r20701, r20702, r20703, r20704, r20705, r20706, r20707, r20708, r20709, r20710, r20711, r20712, r20713, r20714, r20715, r20716, r20717, r20718, r20719, r20720, r20721, r20722, r20723, r20724, r20725, r20726, r20727, r20728, r20729, r20730, r20731, r20732, r20733, r20734, r20735, r20736, r20737, r20738, r20739, r20740, r20741, r20742, r20743, r20744, r20745, r20746, r20747;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r20700);
        mpfr_init_set_str(r20701, "-1.1343364695083283e+17", 10, MPFR_RNDN);
        mpfr_init(r20702);
        mpfr_init_set_str(r20703, "2", 10, MPFR_RNDN);
        mpfr_init(r20704);
        mpfr_init(r20705);
        mpfr_init(r20706);
        mpfr_init_set_str(r20707, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20708, "4.5", 10, MPFR_RNDN);
        mpfr_init(r20709);
        mpfr_init(r20710);
        mpfr_init(r20711);
        mpfr_init(r20712);
        mpfr_init(r20713);
        mpfr_init_set_str(r20714, "0.25", 10, MPFR_RNDN);
        mpfr_init(r20715);
        mpfr_init(r20716);
        mpfr_init_set_str(r20717, "0.125", 10, MPFR_RNDN);
        mpfr_init(r20718);
        mpfr_init(r20719);
        mpfr_init(r20720);
        mpfr_init(r20721);
        mpfr_init(r20722);
        mpfr_init_set_str(r20723, "0.018744434898522296", 10, MPFR_RNDN);
        mpfr_init(r20724);
        mpfr_init(r20725);
        mpfr_init(r20726);
        mpfr_init(r20727);
        mpfr_init(r20728);
        mpfr_init_set_str(r20729, "1", 10, MPFR_RNDN);
        mpfr_init(r20730);
        mpfr_init(r20731);
        mpfr_init(r20732);
        mpfr_init(r20733);
        mpfr_init(r20734);
        mpfr_init(r20735);
        mpfr_init(r20736);
        mpfr_init(r20737);
        mpfr_init(r20738);
        mpfr_init(r20739);
        mpfr_init(r20740);
        mpfr_init(r20741);
        mpfr_init(r20742);
        mpfr_init(r20743);
        mpfr_init(r20744);
        mpfr_init(r20745);
        mpfr_init(r20746);
        mpfr_init(r20747);
}

double f_dm(double v, double w, double r) {
        mpfr_set_d(r20700, v, MPFR_RNDN);
        ;
        mpfr_set_si(r20702, mpfr_cmp(r20700, r20701) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20704, r, MPFR_RNDN);
        mpfr_mul(r20705, r20704, r20704, MPFR_RNDN);
        mpfr_div(r20706, r20703, r20705, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r20709, r20707, r20708, MPFR_RNDN);
        mpfr_add(r20710, r20706, r20709, MPFR_RNDN);
        mpfr_set_d(r20711, w, MPFR_RNDN);
        mpfr_mul(r20712, r20711, r20704, MPFR_RNDN);
        mpfr_mul(r20713, r20712, r20712, MPFR_RNDN);
        ;
        mpfr_mul(r20715, r20713, r20714, MPFR_RNDN);
        mpfr_div(r20716, r20713, r20700, MPFR_RNDN);
        ;
        mpfr_div(r20718, r20717, r20700, MPFR_RNDN);
        mpfr_add(r20719, r20717, r20718, MPFR_RNDN);
        mpfr_mul(r20720, r20716, r20719, MPFR_RNDN);
        mpfr_sub(r20721, r20715, r20720, MPFR_RNDN);
        mpfr_sub(r20722, r20710, r20721, MPFR_RNDN);
        ;
        mpfr_set_si(r20724, mpfr_cmp(r20700, r20723) <= 0, MPFR_RNDN);
        mpfr_add(r20725, r20707, r20706, MPFR_RNDN);
        mpfr_mul(r20726, r20704, r20711, MPFR_RNDN);
        mpfr_mul(r20727, r20726, r20726, MPFR_RNDN);
        mpfr_mul(r20728, r20717, r20727, MPFR_RNDN);
        ;
        mpfr_mul(r20730, r20700, r20700, MPFR_RNDN);
        mpfr_sub(r20731, r20729, r20730, MPFR_RNDN);
        mpfr_cbrt(r20732, r20731, MPFR_RNDN);
        mpfr_mul(r20733, r20732, r20732, MPFR_RNDN);
        mpfr_add(r20734, r20700, r20700, MPFR_RNDN);
        mpfr_sub(r20735, r20707, r20734, MPFR_RNDN);
        mpfr_cbrt(r20736, r20735, MPFR_RNDN);
        mpfr_mul(r20737, r20736, r20736, MPFR_RNDN);
        mpfr_div(r20738, r20733, r20737, MPFR_RNDN);
        mpfr_div(r20739, r20732, r20736, MPFR_RNDN);
        mpfr_mul(r20740, r20738, r20739, MPFR_RNDN);
        mpfr_div(r20741, r20728, r20740, MPFR_RNDN);
        mpfr_add(r20742, r20729, r20700, MPFR_RNDN);
        mpfr_mul(r20743, r20741, r20742, MPFR_RNDN);
        mpfr_sub(r20744, r20725, r20743, MPFR_RNDN);
        mpfr_sub(r20745, r20744, r20708, MPFR_RNDN);
        if (mpfr_get_si(r20724, MPFR_RNDN)) { mpfr_set(r20746, r20745, MPFR_RNDN); } else { mpfr_set(r20746, r20722, MPFR_RNDN); };
        if (mpfr_get_si(r20702, MPFR_RNDN)) { mpfr_set(r20747, r20722, MPFR_RNDN); } else { mpfr_set(r20747, r20746, MPFR_RNDN); };
        return mpfr_get_d(r20747, MPFR_RNDN);
}

