#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 r25632 = 3;
        float r25633 = 2;
        float r25634 = r;
        float r25635 = r25634 * r25634;
        float r25636 = r25633 / r25635;
        float r25637 = r25632 + r25636;
        float r25638 = 0.125;
        float r25639 = v;
        float r25640 = r25633 * r25639;
        float r25641 = r25632 - r25640;
        float r25642 = r25638 * r25641;
        float r25643 = w;
        float r25644 = r25643 * r25643;
        float r25645 = r25644 * r25634;
        float r25646 = r25645 * r25634;
        float r25647 = r25642 * r25646;
        float r25648 = 1;
        float r25649 = r25648 - r25639;
        float r25650 = r25647 / r25649;
        float r25651 = r25637 - r25650;
        float r25652 = 4.5;
        float r25653 = r25651 - r25652;
        return r25653;
}

double f_id(double v, double w, double r) {
        double r25654 = 3;
        double r25655 = 2;
        double r25656 = r;
        double r25657 = r25656 * r25656;
        double r25658 = r25655 / r25657;
        double r25659 = r25654 + r25658;
        double r25660 = 0.125;
        double r25661 = v;
        double r25662 = r25655 * r25661;
        double r25663 = r25654 - r25662;
        double r25664 = r25660 * r25663;
        double r25665 = w;
        double r25666 = r25665 * r25665;
        double r25667 = r25666 * r25656;
        double r25668 = r25667 * r25656;
        double r25669 = r25664 * r25668;
        double r25670 = 1;
        double r25671 = r25670 - r25661;
        double r25672 = r25669 / r25671;
        double r25673 = r25659 - r25672;
        double r25674 = 4.5;
        double r25675 = r25673 - r25674;
        return r25675;
}


double f_of(float v, float w, float r) {
        float r25676 = v;
        float r25677 = -2.526418831017353e+31;
        bool r25678 = r25676 <= r25677;
        float r25679 = 2;
        float r25680 = r;
        float r25681 = r25680 * r25680;
        float r25682 = r25679 / r25681;
        float r25683 = 3;
        float r25684 = 4.5;
        float r25685 = r25683 - r25684;
        float r25686 = r25682 + r25685;
        float r25687 = w;
        float r25688 = r25687 * r25680;
        float r25689 = r25688 * r25688;
        float r25690 = 0.25;
        float r25691 = r25689 * r25690;
        float r25692 = r25689 / r25676;
        float r25693 = 0.125;
        float r25694 = r25693 / r25676;
        float r25695 = r25693 + r25694;
        float r25696 = r25692 * r25695;
        float r25697 = r25691 - r25696;
        float r25698 = r25686 - r25697;
        float r25699 = 4.907722326036034e-19;
        bool r25700 = r25676 <= r25699;
        float r25701 = r25679 / r25680;
        float r25702 = r25701 / r25680;
        float r25703 = r25683 + r25702;
        float r25704 = r25680 * r25687;
        float r25705 = r25704 * r25704;
        float r25706 = r25693 * r25705;
        float r25707 = 1;
        float r25708 = r25676 * r25676;
        float r25709 = r25707 - r25708;
        float r25710 = r25676 + r25676;
        float r25711 = r25683 - r25710;
        float r25712 = r25709 / r25711;
        float r25713 = r25706 / r25712;
        float r25714 = r25707 + r25676;
        float r25715 = r25713 * r25714;
        float r25716 = r25703 - r25715;
        float r25717 = r25716 - r25684;
        float r25718 = r25700 ? r25717 : r25698;
        float r25719 = r25678 ? r25698 : r25718;
        return r25719;
}

double f_od(double v, double w, double r) {
        double r25720 = v;
        double r25721 = -2.526418831017353e+31;
        bool r25722 = r25720 <= r25721;
        double r25723 = 2;
        double r25724 = r;
        double r25725 = r25724 * r25724;
        double r25726 = r25723 / r25725;
        double r25727 = 3;
        double r25728 = 4.5;
        double r25729 = r25727 - r25728;
        double r25730 = r25726 + r25729;
        double r25731 = w;
        double r25732 = r25731 * r25724;
        double r25733 = r25732 * r25732;
        double r25734 = 0.25;
        double r25735 = r25733 * r25734;
        double r25736 = r25733 / r25720;
        double r25737 = 0.125;
        double r25738 = r25737 / r25720;
        double r25739 = r25737 + r25738;
        double r25740 = r25736 * r25739;
        double r25741 = r25735 - r25740;
        double r25742 = r25730 - r25741;
        double r25743 = 4.907722326036034e-19;
        bool r25744 = r25720 <= r25743;
        double r25745 = r25723 / r25724;
        double r25746 = r25745 / r25724;
        double r25747 = r25727 + r25746;
        double r25748 = r25724 * r25731;
        double r25749 = r25748 * r25748;
        double r25750 = r25737 * r25749;
        double r25751 = 1;
        double r25752 = r25720 * r25720;
        double r25753 = r25751 - r25752;
        double r25754 = r25720 + r25720;
        double r25755 = r25727 - r25754;
        double r25756 = r25753 / r25755;
        double r25757 = r25750 / r25756;
        double r25758 = r25751 + r25720;
        double r25759 = r25757 * r25758;
        double r25760 = r25747 - r25759;
        double r25761 = r25760 - r25728;
        double r25762 = r25744 ? r25761 : r25742;
        double r25763 = r25722 ? r25742 : r25762;
        return r25763;
}

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 r25764, r25765, r25766, r25767, r25768, r25769, r25770, r25771, r25772, r25773, r25774, r25775, r25776, r25777, r25778, r25779, r25780, r25781, r25782, r25783, r25784, r25785;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r25764, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r25765, "2", 10, MPFR_RNDN);
        mpfr_init(r25766);
        mpfr_init(r25767);
        mpfr_init(r25768);
        mpfr_init(r25769);
        mpfr_init_set_str(r25770, "0.125", 10, MPFR_RNDN);
        mpfr_init(r25771);
        mpfr_init(r25772);
        mpfr_init(r25773);
        mpfr_init(r25774);
        mpfr_init(r25775);
        mpfr_init(r25776);
        mpfr_init(r25777);
        mpfr_init(r25778);
        mpfr_init(r25779);
        mpfr_init_set_str(r25780, "1", 10, MPFR_RNDN);
        mpfr_init(r25781);
        mpfr_init(r25782);
        mpfr_init(r25783);
        mpfr_init_set_str(r25784, "4.5", 10, MPFR_RNDN);
        mpfr_init(r25785);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r25766, r, MPFR_RNDN);
        mpfr_mul(r25767, r25766, r25766, MPFR_RNDN);
        mpfr_div(r25768, r25765, r25767, MPFR_RNDN);
        mpfr_add(r25769, r25764, r25768, MPFR_RNDN);
        ;
        mpfr_set_d(r25771, v, MPFR_RNDN);
        mpfr_mul(r25772, r25765, r25771, MPFR_RNDN);
        mpfr_sub(r25773, r25764, r25772, MPFR_RNDN);
        mpfr_mul(r25774, r25770, r25773, MPFR_RNDN);
        mpfr_set_d(r25775, w, MPFR_RNDN);
        mpfr_mul(r25776, r25775, r25775, MPFR_RNDN);
        mpfr_mul(r25777, r25776, r25766, MPFR_RNDN);
        mpfr_mul(r25778, r25777, r25766, MPFR_RNDN);
        mpfr_mul(r25779, r25774, r25778, MPFR_RNDN);
        ;
        mpfr_sub(r25781, r25780, r25771, MPFR_RNDN);
        mpfr_div(r25782, r25779, r25781, MPFR_RNDN);
        mpfr_sub(r25783, r25769, r25782, MPFR_RNDN);
        ;
        mpfr_sub(r25785, r25783, r25784, MPFR_RNDN);
        return mpfr_get_d(r25785, MPFR_RNDN);
}

static mpfr_t r25786, r25787, r25788, r25789, r25790, r25791, r25792, r25793, r25794, r25795, r25796, r25797, r25798, r25799, r25800, r25801, r25802, r25803, r25804, r25805, r25806, r25807, r25808, r25809, r25810, r25811, r25812, r25813, r25814, r25815, r25816, r25817, r25818, r25819, r25820, r25821, r25822, r25823, r25824, r25825, r25826, r25827, r25828, r25829;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r25786);
        mpfr_init_set_str(r25787, "-2.526418831017353e+31", 10, MPFR_RNDN);
        mpfr_init(r25788);
        mpfr_init_set_str(r25789, "2", 10, MPFR_RNDN);
        mpfr_init(r25790);
        mpfr_init(r25791);
        mpfr_init(r25792);
        mpfr_init_set_str(r25793, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r25794, "4.5", 10, MPFR_RNDN);
        mpfr_init(r25795);
        mpfr_init(r25796);
        mpfr_init(r25797);
        mpfr_init(r25798);
        mpfr_init(r25799);
        mpfr_init_set_str(r25800, "0.25", 10, MPFR_RNDN);
        mpfr_init(r25801);
        mpfr_init(r25802);
        mpfr_init_set_str(r25803, "0.125", 10, MPFR_RNDN);
        mpfr_init(r25804);
        mpfr_init(r25805);
        mpfr_init(r25806);
        mpfr_init(r25807);
        mpfr_init(r25808);
        mpfr_init_set_str(r25809, "4.907722326036034e-19", 10, MPFR_RNDN);
        mpfr_init(r25810);
        mpfr_init(r25811);
        mpfr_init(r25812);
        mpfr_init(r25813);
        mpfr_init(r25814);
        mpfr_init(r25815);
        mpfr_init(r25816);
        mpfr_init_set_str(r25817, "1", 10, MPFR_RNDN);
        mpfr_init(r25818);
        mpfr_init(r25819);
        mpfr_init(r25820);
        mpfr_init(r25821);
        mpfr_init(r25822);
        mpfr_init(r25823);
        mpfr_init(r25824);
        mpfr_init(r25825);
        mpfr_init(r25826);
        mpfr_init(r25827);
        mpfr_init(r25828);
        mpfr_init(r25829);
}

double f_fm(double v, double w, double r) {
        mpfr_set_d(r25786, v, MPFR_RNDN);
        ;
        mpfr_set_si(r25788, mpfr_cmp(r25786, r25787) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r25790, r, MPFR_RNDN);
        mpfr_mul(r25791, r25790, r25790, MPFR_RNDN);
        mpfr_div(r25792, r25789, r25791, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r25795, r25793, r25794, MPFR_RNDN);
        mpfr_add(r25796, r25792, r25795, MPFR_RNDN);
        mpfr_set_d(r25797, w, MPFR_RNDN);
        mpfr_mul(r25798, r25797, r25790, MPFR_RNDN);
        mpfr_mul(r25799, r25798, r25798, MPFR_RNDN);
        ;
        mpfr_mul(r25801, r25799, r25800, MPFR_RNDN);
        mpfr_div(r25802, r25799, r25786, MPFR_RNDN);
        ;
        mpfr_div(r25804, r25803, r25786, MPFR_RNDN);
        mpfr_add(r25805, r25803, r25804, MPFR_RNDN);
        mpfr_mul(r25806, r25802, r25805, MPFR_RNDN);
        mpfr_sub(r25807, r25801, r25806, MPFR_RNDN);
        mpfr_sub(r25808, r25796, r25807, MPFR_RNDN);
        ;
        mpfr_set_si(r25810, mpfr_cmp(r25786, r25809) <= 0, MPFR_RNDN);
        mpfr_div(r25811, r25789, r25790, MPFR_RNDN);
        mpfr_div(r25812, r25811, r25790, MPFR_RNDN);
        mpfr_add(r25813, r25793, r25812, MPFR_RNDN);
        mpfr_mul(r25814, r25790, r25797, MPFR_RNDN);
        mpfr_mul(r25815, r25814, r25814, MPFR_RNDN);
        mpfr_mul(r25816, r25803, r25815, MPFR_RNDN);
        ;
        mpfr_mul(r25818, r25786, r25786, MPFR_RNDN);
        mpfr_sub(r25819, r25817, r25818, MPFR_RNDN);
        mpfr_add(r25820, r25786, r25786, MPFR_RNDN);
        mpfr_sub(r25821, r25793, r25820, MPFR_RNDN);
        mpfr_div(r25822, r25819, r25821, MPFR_RNDN);
        mpfr_div(r25823, r25816, r25822, MPFR_RNDN);
        mpfr_add(r25824, r25817, r25786, MPFR_RNDN);
        mpfr_mul(r25825, r25823, r25824, MPFR_RNDN);
        mpfr_sub(r25826, r25813, r25825, MPFR_RNDN);
        mpfr_sub(r25827, r25826, r25794, MPFR_RNDN);
        if (mpfr_get_si(r25810, MPFR_RNDN)) { mpfr_set(r25828, r25827, MPFR_RNDN); } else { mpfr_set(r25828, r25808, MPFR_RNDN); };
        if (mpfr_get_si(r25788, MPFR_RNDN)) { mpfr_set(r25829, r25808, MPFR_RNDN); } else { mpfr_set(r25829, r25828, MPFR_RNDN); };
        return mpfr_get_d(r25829, MPFR_RNDN);
}

static mpfr_t r25830, r25831, r25832, r25833, r25834, r25835, r25836, r25837, r25838, r25839, r25840, r25841, r25842, r25843, r25844, r25845, r25846, r25847, r25848, r25849, r25850, r25851, r25852, r25853, r25854, r25855, r25856, r25857, r25858, r25859, r25860, r25861, r25862, r25863, r25864, r25865, r25866, r25867, r25868, r25869, r25870, r25871, r25872, r25873;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r25830);
        mpfr_init_set_str(r25831, "-2.526418831017353e+31", 10, MPFR_RNDN);
        mpfr_init(r25832);
        mpfr_init_set_str(r25833, "2", 10, MPFR_RNDN);
        mpfr_init(r25834);
        mpfr_init(r25835);
        mpfr_init(r25836);
        mpfr_init_set_str(r25837, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r25838, "4.5", 10, MPFR_RNDN);
        mpfr_init(r25839);
        mpfr_init(r25840);
        mpfr_init(r25841);
        mpfr_init(r25842);
        mpfr_init(r25843);
        mpfr_init_set_str(r25844, "0.25", 10, MPFR_RNDN);
        mpfr_init(r25845);
        mpfr_init(r25846);
        mpfr_init_set_str(r25847, "0.125", 10, MPFR_RNDN);
        mpfr_init(r25848);
        mpfr_init(r25849);
        mpfr_init(r25850);
        mpfr_init(r25851);
        mpfr_init(r25852);
        mpfr_init_set_str(r25853, "4.907722326036034e-19", 10, MPFR_RNDN);
        mpfr_init(r25854);
        mpfr_init(r25855);
        mpfr_init(r25856);
        mpfr_init(r25857);
        mpfr_init(r25858);
        mpfr_init(r25859);
        mpfr_init(r25860);
        mpfr_init_set_str(r25861, "1", 10, MPFR_RNDN);
        mpfr_init(r25862);
        mpfr_init(r25863);
        mpfr_init(r25864);
        mpfr_init(r25865);
        mpfr_init(r25866);
        mpfr_init(r25867);
        mpfr_init(r25868);
        mpfr_init(r25869);
        mpfr_init(r25870);
        mpfr_init(r25871);
        mpfr_init(r25872);
        mpfr_init(r25873);
}

double f_dm(double v, double w, double r) {
        mpfr_set_d(r25830, v, MPFR_RNDN);
        ;
        mpfr_set_si(r25832, mpfr_cmp(r25830, r25831) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r25834, r, MPFR_RNDN);
        mpfr_mul(r25835, r25834, r25834, MPFR_RNDN);
        mpfr_div(r25836, r25833, r25835, MPFR_RNDN);
        ;
        ;
        mpfr_sub(r25839, r25837, r25838, MPFR_RNDN);
        mpfr_add(r25840, r25836, r25839, MPFR_RNDN);
        mpfr_set_d(r25841, w, MPFR_RNDN);
        mpfr_mul(r25842, r25841, r25834, MPFR_RNDN);
        mpfr_mul(r25843, r25842, r25842, MPFR_RNDN);
        ;
        mpfr_mul(r25845, r25843, r25844, MPFR_RNDN);
        mpfr_div(r25846, r25843, r25830, MPFR_RNDN);
        ;
        mpfr_div(r25848, r25847, r25830, MPFR_RNDN);
        mpfr_add(r25849, r25847, r25848, MPFR_RNDN);
        mpfr_mul(r25850, r25846, r25849, MPFR_RNDN);
        mpfr_sub(r25851, r25845, r25850, MPFR_RNDN);
        mpfr_sub(r25852, r25840, r25851, MPFR_RNDN);
        ;
        mpfr_set_si(r25854, mpfr_cmp(r25830, r25853) <= 0, MPFR_RNDN);
        mpfr_div(r25855, r25833, r25834, MPFR_RNDN);
        mpfr_div(r25856, r25855, r25834, MPFR_RNDN);
        mpfr_add(r25857, r25837, r25856, MPFR_RNDN);
        mpfr_mul(r25858, r25834, r25841, MPFR_RNDN);
        mpfr_mul(r25859, r25858, r25858, MPFR_RNDN);
        mpfr_mul(r25860, r25847, r25859, MPFR_RNDN);
        ;
        mpfr_mul(r25862, r25830, r25830, MPFR_RNDN);
        mpfr_sub(r25863, r25861, r25862, MPFR_RNDN);
        mpfr_add(r25864, r25830, r25830, MPFR_RNDN);
        mpfr_sub(r25865, r25837, r25864, MPFR_RNDN);
        mpfr_div(r25866, r25863, r25865, MPFR_RNDN);
        mpfr_div(r25867, r25860, r25866, MPFR_RNDN);
        mpfr_add(r25868, r25861, r25830, MPFR_RNDN);
        mpfr_mul(r25869, r25867, r25868, MPFR_RNDN);
        mpfr_sub(r25870, r25857, r25869, MPFR_RNDN);
        mpfr_sub(r25871, r25870, r25838, MPFR_RNDN);
        if (mpfr_get_si(r25854, MPFR_RNDN)) { mpfr_set(r25872, r25871, MPFR_RNDN); } else { mpfr_set(r25872, r25852, MPFR_RNDN); };
        if (mpfr_get_si(r25832, MPFR_RNDN)) { mpfr_set(r25873, r25852, MPFR_RNDN); } else { mpfr_set(r25873, r25872, MPFR_RNDN); };
        return mpfr_get_d(r25873, MPFR_RNDN);
}

