#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 r7849 = 3;
        float r7850 = 2;
        float r7851 = r;
        float r7852 = r7851 * r7851;
        float r7853 = r7850 / r7852;
        float r7854 = r7849 + r7853;
        float r7855 = 0.125;
        float r7856 = v;
        float r7857 = r7850 * r7856;
        float r7858 = r7849 - r7857;
        float r7859 = r7855 * r7858;
        float r7860 = w;
        float r7861 = r7860 * r7860;
        float r7862 = r7861 * r7851;
        float r7863 = r7862 * r7851;
        float r7864 = r7859 * r7863;
        float r7865 = 1;
        float r7866 = r7865 - r7856;
        float r7867 = r7864 / r7866;
        float r7868 = r7854 - r7867;
        float r7869 = 4.5;
        float r7870 = r7868 - r7869;
        return r7870;
}

double f_id(double v, double w, double r) {
        double r7871 = 3;
        double r7872 = 2;
        double r7873 = r;
        double r7874 = r7873 * r7873;
        double r7875 = r7872 / r7874;
        double r7876 = r7871 + r7875;
        double r7877 = 0.125;
        double r7878 = v;
        double r7879 = r7872 * r7878;
        double r7880 = r7871 - r7879;
        double r7881 = r7877 * r7880;
        double r7882 = w;
        double r7883 = r7882 * r7882;
        double r7884 = r7883 * r7873;
        double r7885 = r7884 * r7873;
        double r7886 = r7881 * r7885;
        double r7887 = 1;
        double r7888 = r7887 - r7878;
        double r7889 = r7886 / r7888;
        double r7890 = r7876 - r7889;
        double r7891 = 4.5;
        double r7892 = r7890 - r7891;
        return r7892;
}


double f_of(float v, float w, float r) {
        float r7893 = 3;
        float r7894 = 2;
        float r7895 = r;
        float r7896 = r7895 * r7895;
        float r7897 = r7894 / r7896;
        float r7898 = r7893 + r7897;
        float r7899 = 1;
        float r7900 = v;
        float r7901 = r7900 * r7900;
        float r7902 = r7899 - r7901;
        float r7903 = r7893 / r7902;
        float r7904 = r7899 / r7900;
        float r7905 = r7904 - r7900;
        float r7906 = r7894 / r7905;
        float r7907 = r7903 - r7906;
        float r7908 = w;
        float r7909 = r7895 * r7908;
        float r7910 = r7909 * r7909;
        float r7911 = 0.125;
        float r7912 = r7910 * r7911;
        float r7913 = r7907 * r7912;
        float r7914 = r7899 + r7900;
        float r7915 = r7913 * r7914;
        float r7916 = r7898 - r7915;
        float r7917 = 4.5;
        float r7918 = r7916 - r7917;
        return r7918;
}

double f_od(double v, double w, double r) {
        double r7919 = 3;
        double r7920 = 2;
        double r7921 = r;
        double r7922 = r7921 * r7921;
        double r7923 = r7920 / r7922;
        double r7924 = r7919 + r7923;
        double r7925 = 1;
        double r7926 = v;
        double r7927 = r7926 * r7926;
        double r7928 = r7925 - r7927;
        double r7929 = r7919 / r7928;
        double r7930 = r7925 / r7926;
        double r7931 = r7930 - r7926;
        double r7932 = r7920 / r7931;
        double r7933 = r7929 - r7932;
        double r7934 = w;
        double r7935 = r7921 * r7934;
        double r7936 = r7935 * r7935;
        double r7937 = 0.125;
        double r7938 = r7936 * r7937;
        double r7939 = r7933 * r7938;
        double r7940 = r7925 + r7926;
        double r7941 = r7939 * r7940;
        double r7942 = r7924 - r7941;
        double r7943 = 4.5;
        double r7944 = r7942 - r7943;
        return r7944;
}

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 r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960, r7961, r7962, r7963, r7964, r7965, r7966;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7945, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7946, "2", 10, MPFR_RNDN);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init_set_str(r7951, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7952);
        mpfr_init(r7953);
        mpfr_init(r7954);
        mpfr_init(r7955);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
        mpfr_init_set_str(r7961, "1", 10, MPFR_RNDN);
        mpfr_init(r7962);
        mpfr_init(r7963);
        mpfr_init(r7964);
        mpfr_init_set_str(r7965, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7966);
}

double f_im(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7947, r, MPFR_RNDN);
        mpfr_mul(r7948, r7947, r7947, MPFR_RNDN);
        mpfr_div(r7949, r7946, r7948, MPFR_RNDN);
        mpfr_add(r7950, r7945, r7949, MPFR_RNDN);
        ;
        mpfr_set_d(r7952, v, MPFR_RNDN);
        mpfr_mul(r7953, r7946, r7952, MPFR_RNDN);
        mpfr_sub(r7954, r7945, r7953, MPFR_RNDN);
        mpfr_mul(r7955, r7951, r7954, MPFR_RNDN);
        mpfr_set_d(r7956, w, MPFR_RNDN);
        mpfr_mul(r7957, r7956, r7956, MPFR_RNDN);
        mpfr_mul(r7958, r7957, r7947, MPFR_RNDN);
        mpfr_mul(r7959, r7958, r7947, MPFR_RNDN);
        mpfr_mul(r7960, r7955, r7959, MPFR_RNDN);
        ;
        mpfr_sub(r7962, r7961, r7952, MPFR_RNDN);
        mpfr_div(r7963, r7960, r7962, MPFR_RNDN);
        mpfr_sub(r7964, r7950, r7963, MPFR_RNDN);
        ;
        mpfr_sub(r7966, r7964, r7965, MPFR_RNDN);
        return mpfr_get_d(r7966, MPFR_RNDN);
}

static mpfr_t r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974, r7975, r7976, r7977, r7978, r7979, r7980, r7981, r7982, r7983, r7984, r7985, r7986, r7987, r7988, r7989, r7990, r7991, r7992;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7967, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7968, "2", 10, MPFR_RNDN);
        mpfr_init(r7969);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init_set_str(r7973, "1", 10, MPFR_RNDN);
        mpfr_init(r7974);
        mpfr_init(r7975);
        mpfr_init(r7976);
        mpfr_init(r7977);
        mpfr_init(r7978);
        mpfr_init(r7979);
        mpfr_init(r7980);
        mpfr_init(r7981);
        mpfr_init(r7982);
        mpfr_init(r7983);
        mpfr_init(r7984);
        mpfr_init_set_str(r7985, "0.125", 10, MPFR_RNDN);
        mpfr_init(r7986);
        mpfr_init(r7987);
        mpfr_init(r7988);
        mpfr_init(r7989);
        mpfr_init(r7990);
        mpfr_init_set_str(r7991, "4.5", 10, MPFR_RNDN);
        mpfr_init(r7992);
}

double f_fm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7969, r, MPFR_RNDN);
        mpfr_mul(r7970, r7969, r7969, MPFR_RNDN);
        mpfr_div(r7971, r7968, r7970, MPFR_RNDN);
        mpfr_add(r7972, r7967, r7971, MPFR_RNDN);
        ;
        mpfr_set_d(r7974, v, MPFR_RNDN);
        mpfr_mul(r7975, r7974, r7974, MPFR_RNDN);
        mpfr_sub(r7976, r7973, r7975, MPFR_RNDN);
        mpfr_div(r7977, r7967, r7976, MPFR_RNDN);
        mpfr_div(r7978, r7973, r7974, MPFR_RNDN);
        mpfr_sub(r7979, r7978, r7974, MPFR_RNDN);
        mpfr_div(r7980, r7968, r7979, MPFR_RNDN);
        mpfr_sub(r7981, r7977, r7980, MPFR_RNDN);
        mpfr_set_d(r7982, w, MPFR_RNDN);
        mpfr_mul(r7983, r7969, r7982, MPFR_RNDN);
        mpfr_mul(r7984, r7983, r7983, MPFR_RNDN);
        ;
        mpfr_mul(r7986, r7984, r7985, MPFR_RNDN);
        mpfr_mul(r7987, r7981, r7986, MPFR_RNDN);
        mpfr_add(r7988, r7973, r7974, MPFR_RNDN);
        mpfr_mul(r7989, r7987, r7988, MPFR_RNDN);
        mpfr_sub(r7990, r7972, r7989, MPFR_RNDN);
        ;
        mpfr_sub(r7992, r7990, r7991, MPFR_RNDN);
        return mpfr_get_d(r7992, MPFR_RNDN);
}

static mpfr_t r7993, r7994, r7995, r7996, r7997, r7998, r7999, r8000, r8001, r8002, r8003, r8004, r8005, r8006, r8007, r8008, r8009, r8010, r8011, r8012, r8013, r8014, r8015, r8016, r8017, r8018;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7993, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r7994, "2", 10, MPFR_RNDN);
        mpfr_init(r7995);
        mpfr_init(r7996);
        mpfr_init(r7997);
        mpfr_init(r7998);
        mpfr_init_set_str(r7999, "1", 10, MPFR_RNDN);
        mpfr_init(r8000);
        mpfr_init(r8001);
        mpfr_init(r8002);
        mpfr_init(r8003);
        mpfr_init(r8004);
        mpfr_init(r8005);
        mpfr_init(r8006);
        mpfr_init(r8007);
        mpfr_init(r8008);
        mpfr_init(r8009);
        mpfr_init(r8010);
        mpfr_init_set_str(r8011, "0.125", 10, MPFR_RNDN);
        mpfr_init(r8012);
        mpfr_init(r8013);
        mpfr_init(r8014);
        mpfr_init(r8015);
        mpfr_init(r8016);
        mpfr_init_set_str(r8017, "4.5", 10, MPFR_RNDN);
        mpfr_init(r8018);
}

double f_dm(double v, double w, double r) {
        ;
        ;
        mpfr_set_d(r7995, r, MPFR_RNDN);
        mpfr_mul(r7996, r7995, r7995, MPFR_RNDN);
        mpfr_div(r7997, r7994, r7996, MPFR_RNDN);
        mpfr_add(r7998, r7993, r7997, MPFR_RNDN);
        ;
        mpfr_set_d(r8000, v, MPFR_RNDN);
        mpfr_mul(r8001, r8000, r8000, MPFR_RNDN);
        mpfr_sub(r8002, r7999, r8001, MPFR_RNDN);
        mpfr_div(r8003, r7993, r8002, MPFR_RNDN);
        mpfr_div(r8004, r7999, r8000, MPFR_RNDN);
        mpfr_sub(r8005, r8004, r8000, MPFR_RNDN);
        mpfr_div(r8006, r7994, r8005, MPFR_RNDN);
        mpfr_sub(r8007, r8003, r8006, MPFR_RNDN);
        mpfr_set_d(r8008, w, MPFR_RNDN);
        mpfr_mul(r8009, r7995, r8008, MPFR_RNDN);
        mpfr_mul(r8010, r8009, r8009, MPFR_RNDN);
        ;
        mpfr_mul(r8012, r8010, r8011, MPFR_RNDN);
        mpfr_mul(r8013, r8007, r8012, MPFR_RNDN);
        mpfr_add(r8014, r7999, r8000, MPFR_RNDN);
        mpfr_mul(r8015, r8013, r8014, MPFR_RNDN);
        mpfr_sub(r8016, r7998, r8015, MPFR_RNDN);
        ;
        mpfr_sub(r8018, r8016, r8017, MPFR_RNDN);
        return mpfr_get_d(r8018, MPFR_RNDN);
}

