#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 r37795 = x;
        float r37796 = r37795 * r37795;
        float r37797 = 1;
        float r37798 = r37796 + r37797;
        float r37799 = r37795 / r37798;
        return r37799;
}

double f_id(double x) {
        double r37800 = x;
        double r37801 = r37800 * r37800;
        double r37802 = 1;
        double r37803 = r37801 + r37802;
        double r37804 = r37800 / r37803;
        return r37804;
}


double f_of(float x) {
        float r37805 = x;
        float r37806 = -892037.4565711613;
        bool r37807 = r37805 <= r37806;
        float r37808 = 1;
        float r37809 = 5;
        float r37810 = pow(r37805, r37809);
        float r37811 = r37808 / r37810;
        float r37812 = r37808 / r37805;
        float r37813 = r37811 + r37812;
        float r37814 = 3;
        float r37815 = pow(r37805, r37814);
        float r37816 = r37808 / r37815;
        float r37817 = r37813 - r37816;
        float r37818 = 1041.212443333186;
        bool r37819 = r37805 <= r37818;
        float r37820 = r37805 * r37805;
        float r37821 = r37820 + r37808;
        float r37822 = r37805 / r37821;
        float r37823 = r37819 ? r37822 : r37817;
        float r37824 = r37807 ? r37817 : r37823;
        return r37824;
}

double f_od(double x) {
        double r37825 = x;
        double r37826 = -892037.4565711613;
        bool r37827 = r37825 <= r37826;
        double r37828 = 1;
        double r37829 = 5;
        double r37830 = pow(r37825, r37829);
        double r37831 = r37828 / r37830;
        double r37832 = r37828 / r37825;
        double r37833 = r37831 + r37832;
        double r37834 = 3;
        double r37835 = pow(r37825, r37834);
        double r37836 = r37828 / r37835;
        double r37837 = r37833 - r37836;
        double r37838 = 1041.212443333186;
        bool r37839 = r37825 <= r37838;
        double r37840 = r37825 * r37825;
        double r37841 = r37840 + r37828;
        double r37842 = r37825 / r37841;
        double r37843 = r37839 ? r37842 : r37837;
        double r37844 = r37827 ? r37837 : r37843;
        return r37844;
}

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 r37845, r37846, r37847, r37848, r37849;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r37845);
        mpfr_init(r37846);
        mpfr_init_set_str(r37847, "1", 10, MPFR_RNDN);
        mpfr_init(r37848);
        mpfr_init(r37849);
}

double f_im(double x) {
        mpfr_set_d(r37845, x, MPFR_RNDN);
        mpfr_mul(r37846, r37845, r37845, MPFR_RNDN);
        ;
        mpfr_add(r37848, r37846, r37847, MPFR_RNDN);
        mpfr_div(r37849, r37845, r37848, MPFR_RNDN);
        return mpfr_get_d(r37849, MPFR_RNDN);
}

static mpfr_t r37850, r37851, r37852, r37853, r37854, r37855, r37856, r37857, r37858, r37859, r37860, r37861, r37862, r37863, r37864, r37865, r37866, r37867, r37868, r37869;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37850);
        mpfr_init_set_str(r37851, "-892037.4565711613", 10, MPFR_RNDN);
        mpfr_init(r37852);
        mpfr_init_set_str(r37853, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37854, "5", 10, MPFR_RNDN);
        mpfr_init(r37855);
        mpfr_init(r37856);
        mpfr_init(r37857);
        mpfr_init(r37858);
        mpfr_init_set_str(r37859, "3", 10, MPFR_RNDN);
        mpfr_init(r37860);
        mpfr_init(r37861);
        mpfr_init(r37862);
        mpfr_init_set_str(r37863, "1041.212443333186", 10, MPFR_RNDN);
        mpfr_init(r37864);
        mpfr_init(r37865);
        mpfr_init(r37866);
        mpfr_init(r37867);
        mpfr_init(r37868);
        mpfr_init(r37869);
}

double f_fm(double x) {
        mpfr_set_d(r37850, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37852, mpfr_cmp(r37850, r37851) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37855, r37850, r37854, MPFR_RNDN);
        mpfr_div(r37856, r37853, r37855, MPFR_RNDN);
        mpfr_div(r37857, r37853, r37850, MPFR_RNDN);
        mpfr_add(r37858, r37856, r37857, MPFR_RNDN);
        ;
        mpfr_pow(r37860, r37850, r37859, MPFR_RNDN);
        mpfr_div(r37861, r37853, r37860, MPFR_RNDN);
        mpfr_sub(r37862, r37858, r37861, MPFR_RNDN);
        ;
        mpfr_set_si(r37864, mpfr_cmp(r37850, r37863) <= 0, MPFR_RNDN);
        mpfr_mul(r37865, r37850, r37850, MPFR_RNDN);
        mpfr_add(r37866, r37865, r37853, MPFR_RNDN);
        mpfr_div(r37867, r37850, r37866, MPFR_RNDN);
        if (mpfr_get_si(r37864, MPFR_RNDN)) { mpfr_set(r37868, r37867, MPFR_RNDN); } else { mpfr_set(r37868, r37862, MPFR_RNDN); };
        if (mpfr_get_si(r37852, MPFR_RNDN)) { mpfr_set(r37869, r37862, MPFR_RNDN); } else { mpfr_set(r37869, r37868, MPFR_RNDN); };
        return mpfr_get_d(r37869, MPFR_RNDN);
}

static mpfr_t r37870, r37871, r37872, r37873, r37874, r37875, r37876, r37877, r37878, r37879, r37880, r37881, r37882, r37883, r37884, r37885, r37886, r37887, r37888, r37889;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37870);
        mpfr_init_set_str(r37871, "-892037.4565711613", 10, MPFR_RNDN);
        mpfr_init(r37872);
        mpfr_init_set_str(r37873, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37874, "5", 10, MPFR_RNDN);
        mpfr_init(r37875);
        mpfr_init(r37876);
        mpfr_init(r37877);
        mpfr_init(r37878);
        mpfr_init_set_str(r37879, "3", 10, MPFR_RNDN);
        mpfr_init(r37880);
        mpfr_init(r37881);
        mpfr_init(r37882);
        mpfr_init_set_str(r37883, "1041.212443333186", 10, MPFR_RNDN);
        mpfr_init(r37884);
        mpfr_init(r37885);
        mpfr_init(r37886);
        mpfr_init(r37887);
        mpfr_init(r37888);
        mpfr_init(r37889);
}

double f_dm(double x) {
        mpfr_set_d(r37870, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37872, mpfr_cmp(r37870, r37871) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37875, r37870, r37874, MPFR_RNDN);
        mpfr_div(r37876, r37873, r37875, MPFR_RNDN);
        mpfr_div(r37877, r37873, r37870, MPFR_RNDN);
        mpfr_add(r37878, r37876, r37877, MPFR_RNDN);
        ;
        mpfr_pow(r37880, r37870, r37879, MPFR_RNDN);
        mpfr_div(r37881, r37873, r37880, MPFR_RNDN);
        mpfr_sub(r37882, r37878, r37881, MPFR_RNDN);
        ;
        mpfr_set_si(r37884, mpfr_cmp(r37870, r37883) <= 0, MPFR_RNDN);
        mpfr_mul(r37885, r37870, r37870, MPFR_RNDN);
        mpfr_add(r37886, r37885, r37873, MPFR_RNDN);
        mpfr_div(r37887, r37870, r37886, MPFR_RNDN);
        if (mpfr_get_si(r37884, MPFR_RNDN)) { mpfr_set(r37888, r37887, MPFR_RNDN); } else { mpfr_set(r37888, r37882, MPFR_RNDN); };
        if (mpfr_get_si(r37872, MPFR_RNDN)) { mpfr_set(r37889, r37882, MPFR_RNDN); } else { mpfr_set(r37889, r37888, MPFR_RNDN); };
        return mpfr_get_d(r37889, MPFR_RNDN);
}

