#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "x / (x^2 + 1)";

double f_if(float x) {
        float r37755 = x;
        float r37756 = r37755 * r37755;
        float r37757 = 1;
        float r37758 = r37756 + r37757;
        float r37759 = r37755 / r37758;
        return r37759;
}

double f_id(double x) {
        double r37760 = x;
        double r37761 = r37760 * r37760;
        double r37762 = 1;
        double r37763 = r37761 + r37762;
        double r37764 = r37760 / r37763;
        return r37764;
}


double f_of(float x) {
        float r37765 = x;
        float r37766 = -28.696850627339362;
        bool r37767 = r37765 <= r37766;
        float r37768 = 1;
        float r37769 = 5;
        float r37770 = pow(r37765, r37769);
        float r37771 = r37768 / r37770;
        float r37772 = r37768 / r37765;
        float r37773 = r37771 + r37772;
        float r37774 = 3;
        float r37775 = pow(r37765, r37774);
        float r37776 = r37768 / r37775;
        float r37777 = r37773 - r37776;
        float r37778 = 6031115.829667645;
        bool r37779 = r37765 <= r37778;
        float r37780 = r37765 * r37765;
        float r37781 = r37780 + r37768;
        float r37782 = r37765 / r37781;
        float r37783 = r37779 ? r37782 : r37777;
        float r37784 = r37767 ? r37777 : r37783;
        return r37784;
}

double f_od(double x) {
        double r37785 = x;
        double r37786 = -28.696850627339362;
        bool r37787 = r37785 <= r37786;
        double r37788 = 1;
        double r37789 = 5;
        double r37790 = pow(r37785, r37789);
        double r37791 = r37788 / r37790;
        double r37792 = r37788 / r37785;
        double r37793 = r37791 + r37792;
        double r37794 = 3;
        double r37795 = pow(r37785, r37794);
        double r37796 = r37788 / r37795;
        double r37797 = r37793 - r37796;
        double r37798 = 6031115.829667645;
        bool r37799 = r37785 <= r37798;
        double r37800 = r37785 * r37785;
        double r37801 = r37800 + r37788;
        double r37802 = r37785 / r37801;
        double r37803 = r37799 ? r37802 : r37797;
        double r37804 = r37787 ? r37797 : r37803;
        return r37804;
}

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 r37805, r37806, r37807, r37808, r37809;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r37805);
        mpfr_init(r37806);
        mpfr_init_set_str(r37807, "1", 10, MPFR_RNDN);
        mpfr_init(r37808);
        mpfr_init(r37809);
}

double f_im(double x) {
        mpfr_set_d(r37805, x, MPFR_RNDN);
        mpfr_mul(r37806, r37805, r37805, MPFR_RNDN);
        ;
        mpfr_add(r37808, r37806, r37807, MPFR_RNDN);
        mpfr_div(r37809, r37805, r37808, MPFR_RNDN);
        return mpfr_get_d(r37809, MPFR_RNDN);
}

static mpfr_t r37810, r37811, r37812, r37813, r37814, r37815, r37816, r37817, r37818, r37819, r37820, r37821, r37822, r37823, r37824, r37825, r37826, r37827, r37828, r37829;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37810);
        mpfr_init_set_str(r37811, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r37812);
        mpfr_init_set_str(r37813, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37814, "5", 10, MPFR_RNDN);
        mpfr_init(r37815);
        mpfr_init(r37816);
        mpfr_init(r37817);
        mpfr_init(r37818);
        mpfr_init_set_str(r37819, "3", 10, MPFR_RNDN);
        mpfr_init(r37820);
        mpfr_init(r37821);
        mpfr_init(r37822);
        mpfr_init_set_str(r37823, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r37824);
        mpfr_init(r37825);
        mpfr_init(r37826);
        mpfr_init(r37827);
        mpfr_init(r37828);
        mpfr_init(r37829);
}

double f_fm(double x) {
        mpfr_set_d(r37810, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37812, mpfr_cmp(r37810, r37811) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37815, r37810, r37814, MPFR_RNDN);
        mpfr_div(r37816, r37813, r37815, MPFR_RNDN);
        mpfr_div(r37817, r37813, r37810, MPFR_RNDN);
        mpfr_add(r37818, r37816, r37817, MPFR_RNDN);
        ;
        mpfr_pow(r37820, r37810, r37819, MPFR_RNDN);
        mpfr_div(r37821, r37813, r37820, MPFR_RNDN);
        mpfr_sub(r37822, r37818, r37821, MPFR_RNDN);
        ;
        mpfr_set_si(r37824, mpfr_cmp(r37810, r37823) <= 0, MPFR_RNDN);
        mpfr_mul(r37825, r37810, r37810, MPFR_RNDN);
        mpfr_add(r37826, r37825, r37813, MPFR_RNDN);
        mpfr_div(r37827, r37810, r37826, MPFR_RNDN);
        if (mpfr_get_si(r37824, MPFR_RNDN)) { mpfr_set(r37828, r37827, MPFR_RNDN); } else { mpfr_set(r37828, r37822, MPFR_RNDN); };
        if (mpfr_get_si(r37812, MPFR_RNDN)) { mpfr_set(r37829, r37822, MPFR_RNDN); } else { mpfr_set(r37829, r37828, MPFR_RNDN); };
        return mpfr_get_d(r37829, MPFR_RNDN);
}

static mpfr_t r37830, r37831, r37832, r37833, r37834, r37835, r37836, r37837, r37838, r37839, r37840, r37841, r37842, r37843, r37844, r37845, r37846, r37847, r37848, r37849;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37830);
        mpfr_init_set_str(r37831, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r37832);
        mpfr_init_set_str(r37833, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37834, "5", 10, MPFR_RNDN);
        mpfr_init(r37835);
        mpfr_init(r37836);
        mpfr_init(r37837);
        mpfr_init(r37838);
        mpfr_init_set_str(r37839, "3", 10, MPFR_RNDN);
        mpfr_init(r37840);
        mpfr_init(r37841);
        mpfr_init(r37842);
        mpfr_init_set_str(r37843, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r37844);
        mpfr_init(r37845);
        mpfr_init(r37846);
        mpfr_init(r37847);
        mpfr_init(r37848);
        mpfr_init(r37849);
}

double f_dm(double x) {
        mpfr_set_d(r37830, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37832, mpfr_cmp(r37830, r37831) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37835, r37830, r37834, MPFR_RNDN);
        mpfr_div(r37836, r37833, r37835, MPFR_RNDN);
        mpfr_div(r37837, r37833, r37830, MPFR_RNDN);
        mpfr_add(r37838, r37836, r37837, MPFR_RNDN);
        ;
        mpfr_pow(r37840, r37830, r37839, MPFR_RNDN);
        mpfr_div(r37841, r37833, r37840, MPFR_RNDN);
        mpfr_sub(r37842, r37838, r37841, MPFR_RNDN);
        ;
        mpfr_set_si(r37844, mpfr_cmp(r37830, r37843) <= 0, MPFR_RNDN);
        mpfr_mul(r37845, r37830, r37830, MPFR_RNDN);
        mpfr_add(r37846, r37845, r37833, MPFR_RNDN);
        mpfr_div(r37847, r37830, r37846, MPFR_RNDN);
        if (mpfr_get_si(r37844, MPFR_RNDN)) { mpfr_set(r37848, r37847, MPFR_RNDN); } else { mpfr_set(r37848, r37842, MPFR_RNDN); };
        if (mpfr_get_si(r37832, MPFR_RNDN)) { mpfr_set(r37849, r37842, MPFR_RNDN); } else { mpfr_set(r37849, r37848, MPFR_RNDN); };
        return mpfr_get_d(r37849, MPFR_RNDN);
}

