#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 r19606 = 3;
        float r19607 = 2;
        float r19608 = r;
        float r19609 = r19608 * r19608;
        float r19610 = r19607 / r19609;
        float r19611 = r19606 + r19610;
        float r19612 = 0.125;
        float r19613 = v;
        float r19614 = r19607 * r19613;
        float r19615 = r19606 - r19614;
        float r19616 = r19612 * r19615;
        float r19617 = w;
        float r19618 = r19617 * r19617;
        float r19619 = r19618 * r19608;
        float r19620 = r19619 * r19608;
        float r19621 = r19616 * r19620;
        float r19622 = 1;
        float r19623 = r19622 - r19613;
        float r19624 = r19621 / r19623;
        float r19625 = r19611 - r19624;
        float r19626 = 4.5;
        float r19627 = r19625 - r19626;
        return r19627;
}

double f_id(double v, double w, double r) {
        double r19628 = 3;
        double r19629 = 2;
        double r19630 = r;
        double r19631 = r19630 * r19630;
        double r19632 = r19629 / r19631;
        double r19633 = r19628 + r19632;
        double r19634 = 0.125;
        double r19635 = v;
        double r19636 = r19629 * r19635;
        double r19637 = r19628 - r19636;
        double r19638 = r19634 * r19637;
        double r19639 = w;
        double r19640 = r19639 * r19639;
        double r19641 = r19640 * r19630;
        double r19642 = r19641 * r19630;
        double r19643 = r19638 * r19642;
        double r19644 = 1;
        double r19645 = r19644 - r19635;
        double r19646 = r19643 / r19645;
        double r19647 = r19633 - r19646;
        double r19648 = 4.5;
        double r19649 = r19647 - r19648;
        return r19649;
}


double f_of(float v, float w, float r) {
        float r19650 = v;
        float r19651 = -3.295616946978752;
        bool r19652 = r19650 <= r19651;
        float r19653 = 2;
        float r19654 = r;
        float r19655 = r19653 / r19654;
        float r19656 = r19655 / r19654;
        float r19657 = 3;
        float r19658 = 4.5;
        float r19659 = r19657 - r19658;
        float r19660 = r19656 + r19659;
        float r19661 = 0.25;
        float r19662 = w;
        float r19663 = r19662 * r19654;
        float r19664 = r19663 * r19663;
        float r19665 = r19661 * r19664;
        float r19666 = r19660 - r19665;
        float r19667 = r19664 / r19650;
        float r19668 = 0.125;
        float r19669 = r19668 / r19650;
        float r19670 = r19668 + r19669;
        float r19671 = r19667 * r19670;
        float r19672 = r19666 + r19671;
        float r19673 = 1.4461390885912786;
        bool r19674 = r19650 <= r19673;
        float r19675 = r19654 * r19654;
        float r19676 = r19653 / r19675;
        float r19677 = r19668 * r19650;
        float r19678 = r19677 + r19668;
        float r19679 = 1/3;
        float r19680 = 2/9;
        float r19681 = r19680 * r19650;
        float r19682 = r19679 + r19681;
        float r19683 = r19650 * r19650;
        float r19684 = 5/27;
        float r19685 = r19683 * r19684;
        float r19686 = r19682 - r19685;
        float r19687 = r19678 / r19686;
        float r19688 = r19687 * r19664;
        float r19689 = r19676 - r19688;
        float r19690 = r19689 + r19659;
        float r19691 = r19674 ? r19690 : r19672;
        float r19692 = r19652 ? r19672 : r19691;
        return r19692;
}

double f_od(double v, double w, double r) {
        double r19693 = v;
        double r19694 = -3.295616946978752;
        bool r19695 = r19693 <= r19694;
        double r19696 = 2;
        double r19697 = r;
        double r19698 = r19696 / r19697;
        double r19699 = r19698 / r19697;
        double r19700 = 3;
        double r19701 = 4.5;
        double r19702 = r19700 - r19701;
        double r19703 = r19699 + r19702;
        double r19704 = 0.25;
        double r19705 = w;
        double r19706 = r19705 * r19697;
        double r19707 = r19706 * r19706;
        double r19708 = r19704 * r19707;
        double r19709 = r19703 - r19708;
        double r19710 = r19707 / r19693;
        double r19711 = 0.125;
        double r19712 = r19711 / r19693;
        double r19713 = r19711 + r19712;
        double r19714 = r19710 * r19713;
        double r19715 = r19709 + r19714;
        double r19716 = 1.4461390885912786;
        bool r19717 = r19693 <= r19716;
        double r19718 = r19697 * r19697;
        double r19719 = r19696 / r19718;
        double r19720 = r19711 * r19693;
        double r19721 = r19720 + r19711;
        double r19722 = 1/3;
        double r19723 = 2/9;
        double r19724 = r19723 * r19693;
        double r19725 = r19722 + r19724;
        double r19726 = r19693 * r19693;
        double r19727 = 5/27;
        double r19728 = r19726 * r19727;
        double r19729 = r19725 - r19728;
        double r19730 = r19721 / r19729;
        double r19731 = r19730 * r19707;
        double r19732 = r19719 - r19731;
        double r19733 = r19732 + r19702;
        double r19734 = r19717 ? r19733 : r19715;
        double r19735 = r19695 ? r19715 : r19734;
        return r19735;
}

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 r19736, r19737, r19738, r19739, r19740, r19741, r19742, r19743, r19744, r19745, r19746, r19747, r19748, r19749, r19750, r19751, r19752, r19753, r19754, r19755, r19756, r19757;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r19736, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19737, "2", 10, MPFR_RNDN);
        mpfr_init(r19738);
        mpfr_init(r19739);
        mpfr_init(r19740);
        mpfr_init(r19741);
        mpfr_init_set_str(r19742, "0.125", 10, MPFR_RNDN);
        mpfr_init(r19743);
        mpfr_init(r19744);
        mpfr_init(r19745);
        mpfr_init(r19746);
        mpfr_init(r19747);
        mpfr_init(r19748);
        mpfr_init(r19749);
        mpfr_init(r19750);
        mpfr_init(r19751);
        mpfr_init_set_str(r19752, "1", 10, MPFR_RNDN);
        mpfr_init(r19753);
        mpfr_init(r19754);
        mpfr_init(r19755);
        mpfr_init_set_str(r19756, "4.5", 10, MPFR_RNDN);
        mpfr_init(r19757);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r19738, r, MPFR_RNDN);
        mpfr_mul(r19739, r19738, r19738, MPFR_RNDN);
        mpfr_div(r19740, r19737, r19739, MPFR_RNDN);
        mpfr_add(r19741, r19736, r19740, MPFR_RNDN);
        ;
        mpfr_set_d(r19743, v, MPFR_RNDN);
        mpfr_mul(r19744, r19737, r19743, MPFR_RNDN);
        mpfr_sub(r19745, r19736, r19744, MPFR_RNDN);
        mpfr_mul(r19746, r19742, r19745, MPFR_RNDN);
        mpfr_set_d(r19747, w, MPFR_RNDN);
        mpfr_mul(r19748, r19747, r19747, MPFR_RNDN);
        mpfr_mul(r19749, r19748, r19738, MPFR_RNDN);
        mpfr_mul(r19750, r19749, r19738, MPFR_RNDN);
        mpfr_mul(r19751, r19746, r19750, MPFR_RNDN);
        ;
        mpfr_sub(r19753, r19752, r19743, MPFR_RNDN);
        mpfr_div(r19754, r19751, r19753, MPFR_RNDN);
        mpfr_sub(r19755, r19741, r19754, MPFR_RNDN);
        ;
        mpfr_sub(r19757, r19755, r19756, MPFR_RNDN);
        return mpfr_get_d(r19757, MPFR_RNDN);
}

static mpfr_t r19758, r19759, r19760, r19761, r19762, r19763, r19764, r19765, r19766, r19767, r19768, r19769, r19770, r19771, r19772, r19773, r19774, r19775, r19776, r19777, r19778, r19779, r19780, r19781, r19782, r19783, r19784, r19785, r19786, r19787, r19788, r19789, r19790, r19791, r19792, r19793, r19794, r19795, r19796, r19797, r19798, r19799, r19800;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19758);
        mpfr_init_set_str(r19759, "-3.295616946978752", 10, MPFR_RNDN);
        mpfr_init(r19760);
        mpfr_init_set_str(r19761, "2", 10, MPFR_RNDN);
        mpfr_init(r19762);
        mpfr_init(r19763);
        mpfr_init(r19764);
        mpfr_init_set_str(r19765, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19766, "4.5", 10, MPFR_RNDN);
        mpfr_init(r19767);
        mpfr_init(r19768);
        mpfr_init_set_str(r19769, "0.25", 10, MPFR_RNDN);
        mpfr_init(r19770);
        mpfr_init(r19771);
        mpfr_init(r19772);
        mpfr_init(r19773);
        mpfr_init(r19774);
        mpfr_init(r19775);
        mpfr_init_set_str(r19776, "0.125", 10, MPFR_RNDN);
        mpfr_init(r19777);
        mpfr_init(r19778);
        mpfr_init(r19779);
        mpfr_init(r19780);
        mpfr_init_set_str(r19781, "1.4461390885912786", 10, MPFR_RNDN);
        mpfr_init(r19782);
        mpfr_init(r19783);
        mpfr_init(r19784);
        mpfr_init(r19785);
        mpfr_init(r19786);
        mpfr_init_set_str(r19787, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19788, "2/9", 10, MPFR_RNDN);
        mpfr_init(r19789);
        mpfr_init(r19790);
        mpfr_init(r19791);
        mpfr_init_set_str(r19792, "5/27", 10, MPFR_RNDN);
        mpfr_init(r19793);
        mpfr_init(r19794);
        mpfr_init(r19795);
        mpfr_init(r19796);
        mpfr_init(r19797);
        mpfr_init(r19798);
        mpfr_init(r19799);
        mpfr_init(r19800);
}

double f_fm(double v, double w, double r) {
        mpfr_set_d(r19758, v, MPFR_RNDN);
        ;
        mpfr_set_si(r19760, mpfr_cmp(r19758, r19759) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19762, r, MPFR_RNDN);
        mpfr_div(r19763, r19761, r19762, MPFR_RNDN);
        mpfr_div(r19764, r19763, r19762, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r19767, r19765, r19766, MPFR_RNDN);
        mpfr_add(r19768, r19764, r19767, MPFR_RNDN);
        ;
        mpfr_set_d(r19770, w, MPFR_RNDN);
        mpfr_mul(r19771, r19770, r19762, MPFR_RNDN);
        mpfr_mul(r19772, r19771, r19771, MPFR_RNDN);
        mpfr_mul(r19773, r19769, r19772, MPFR_RNDN);
        mpfr_sub(r19774, r19768, r19773, MPFR_RNDN);
        mpfr_div(r19775, r19772, r19758, MPFR_RNDN);
        ;
        mpfr_div(r19777, r19776, r19758, MPFR_RNDN);
        mpfr_add(r19778, r19776, r19777, MPFR_RNDN);
        mpfr_mul(r19779, r19775, r19778, MPFR_RNDN);
        mpfr_add(r19780, r19774, r19779, MPFR_RNDN);
        ;
        mpfr_set_si(r19782, mpfr_cmp(r19758, r19781) <= 0, MPFR_RNDN);
        mpfr_mul(r19783, r19762, r19762, MPFR_RNDN);
        mpfr_div(r19784, r19761, r19783, MPFR_RNDN);
        mpfr_mul(r19785, r19776, r19758, MPFR_RNDN);
        mpfr_add(r19786, r19785, r19776, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r19789, r19788, r19758, MPFR_RNDN);
        mpfr_add(r19790, r19787, r19789, MPFR_RNDN);
        mpfr_mul(r19791, r19758, r19758, MPFR_RNDN);
        ;
        mpfr_mul(r19793, r19791, r19792, MPFR_RNDN);
        mpfr_sub(r19794, r19790, r19793, MPFR_RNDN);
        mpfr_div(r19795, r19786, r19794, MPFR_RNDN);
        mpfr_mul(r19796, r19795, r19772, MPFR_RNDN);
        mpfr_sub(r19797, r19784, r19796, MPFR_RNDN);
        mpfr_add(r19798, r19797, r19767, MPFR_RNDN);
        if (mpfr_get_si(r19782, MPFR_RNDN)) { mpfr_set(r19799, r19798, MPFR_RNDN); } else { mpfr_set(r19799, r19780, MPFR_RNDN); };
        if (mpfr_get_si(r19760, MPFR_RNDN)) { mpfr_set(r19800, r19780, MPFR_RNDN); } else { mpfr_set(r19800, r19799, MPFR_RNDN); };
        return mpfr_get_d(r19800, MPFR_RNDN);
}

static mpfr_t r19801, r19802, r19803, r19804, r19805, r19806, r19807, r19808, r19809, r19810, r19811, r19812, r19813, r19814, r19815, r19816, r19817, r19818, r19819, r19820, r19821, r19822, r19823, r19824, r19825, r19826, r19827, r19828, r19829, r19830, r19831, r19832, r19833, r19834, r19835, r19836, r19837, r19838, r19839, r19840, r19841, r19842, r19843;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19801);
        mpfr_init_set_str(r19802, "-3.295616946978752", 10, MPFR_RNDN);
        mpfr_init(r19803);
        mpfr_init_set_str(r19804, "2", 10, MPFR_RNDN);
        mpfr_init(r19805);
        mpfr_init(r19806);
        mpfr_init(r19807);
        mpfr_init_set_str(r19808, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19809, "4.5", 10, MPFR_RNDN);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init_set_str(r19812, "0.25", 10, MPFR_RNDN);
        mpfr_init(r19813);
        mpfr_init(r19814);
        mpfr_init(r19815);
        mpfr_init(r19816);
        mpfr_init(r19817);
        mpfr_init(r19818);
        mpfr_init_set_str(r19819, "0.125", 10, MPFR_RNDN);
        mpfr_init(r19820);
        mpfr_init(r19821);
        mpfr_init(r19822);
        mpfr_init(r19823);
        mpfr_init_set_str(r19824, "1.4461390885912786", 10, MPFR_RNDN);
        mpfr_init(r19825);
        mpfr_init(r19826);
        mpfr_init(r19827);
        mpfr_init(r19828);
        mpfr_init(r19829);
        mpfr_init_set_str(r19830, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19831, "2/9", 10, MPFR_RNDN);
        mpfr_init(r19832);
        mpfr_init(r19833);
        mpfr_init(r19834);
        mpfr_init_set_str(r19835, "5/27", 10, MPFR_RNDN);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init(r19843);
}

double f_dm(double v, double w, double r) {
        mpfr_set_d(r19801, v, MPFR_RNDN);
        ;
        mpfr_set_si(r19803, mpfr_cmp(r19801, r19802) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19805, r, MPFR_RNDN);
        mpfr_div(r19806, r19804, r19805, MPFR_RNDN);
        mpfr_div(r19807, r19806, r19805, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r19810, r19808, r19809, MPFR_RNDN);
        mpfr_add(r19811, r19807, r19810, MPFR_RNDN);
        ;
        mpfr_set_d(r19813, w, MPFR_RNDN);
        mpfr_mul(r19814, r19813, r19805, MPFR_RNDN);
        mpfr_mul(r19815, r19814, r19814, MPFR_RNDN);
        mpfr_mul(r19816, r19812, r19815, MPFR_RNDN);
        mpfr_sub(r19817, r19811, r19816, MPFR_RNDN);
        mpfr_div(r19818, r19815, r19801, MPFR_RNDN);
        ;
        mpfr_div(r19820, r19819, r19801, MPFR_RNDN);
        mpfr_add(r19821, r19819, r19820, MPFR_RNDN);
        mpfr_mul(r19822, r19818, r19821, MPFR_RNDN);
        mpfr_add(r19823, r19817, r19822, MPFR_RNDN);
        ;
        mpfr_set_si(r19825, mpfr_cmp(r19801, r19824) <= 0, MPFR_RNDN);
        mpfr_mul(r19826, r19805, r19805, MPFR_RNDN);
        mpfr_div(r19827, r19804, r19826, MPFR_RNDN);
        mpfr_mul(r19828, r19819, r19801, MPFR_RNDN);
        mpfr_add(r19829, r19828, r19819, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r19832, r19831, r19801, MPFR_RNDN);
        mpfr_add(r19833, r19830, r19832, MPFR_RNDN);
        mpfr_mul(r19834, r19801, r19801, MPFR_RNDN);
        ;
        mpfr_mul(r19836, r19834, r19835, MPFR_RNDN);
        mpfr_sub(r19837, r19833, r19836, MPFR_RNDN);
        mpfr_div(r19838, r19829, r19837, MPFR_RNDN);
        mpfr_mul(r19839, r19838, r19815, MPFR_RNDN);
        mpfr_sub(r19840, r19827, r19839, MPFR_RNDN);
        mpfr_add(r19841, r19840, r19810, MPFR_RNDN);
        if (mpfr_get_si(r19825, MPFR_RNDN)) { mpfr_set(r19842, r19841, MPFR_RNDN); } else { mpfr_set(r19842, r19823, MPFR_RNDN); };
        if (mpfr_get_si(r19803, MPFR_RNDN)) { mpfr_set(r19843, r19823, MPFR_RNDN); } else { mpfr_set(r19843, r19842, MPFR_RNDN); };
        return mpfr_get_d(r19843, MPFR_RNDN);
}

