#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 r37947 = x;
        float r37948 = r37947 * r37947;
        float r37949 = 1;
        float r37950 = r37948 + r37949;
        float r37951 = r37947 / r37950;
        return r37951;
}

double f_id(double x) {
        double r37952 = x;
        double r37953 = r37952 * r37952;
        double r37954 = 1;
        double r37955 = r37953 + r37954;
        double r37956 = r37952 / r37955;
        return r37956;
}


double f_of(float x) {
        float r37957 = x;
        float r37958 = -28.696850627339362;
        bool r37959 = r37957 <= r37958;
        float r37960 = 1;
        float r37961 = 5;
        float r37962 = pow(r37957, r37961);
        float r37963 = r37960 / r37962;
        float r37964 = r37960 / r37957;
        float r37965 = r37963 + r37964;
        float r37966 = 3;
        float r37967 = pow(r37957, r37966);
        float r37968 = r37960 / r37967;
        float r37969 = r37965 - r37968;
        float r37970 = 6031115.829667645;
        bool r37971 = r37957 <= r37970;
        float r37972 = r37957 * r37957;
        float r37973 = r37972 + r37960;
        float r37974 = r37957 / r37973;
        float r37975 = r37971 ? r37974 : r37969;
        float r37976 = r37959 ? r37969 : r37975;
        return r37976;
}

double f_od(double x) {
        double r37977 = x;
        double r37978 = -28.696850627339362;
        bool r37979 = r37977 <= r37978;
        double r37980 = 1;
        double r37981 = 5;
        double r37982 = pow(r37977, r37981);
        double r37983 = r37980 / r37982;
        double r37984 = r37980 / r37977;
        double r37985 = r37983 + r37984;
        double r37986 = 3;
        double r37987 = pow(r37977, r37986);
        double r37988 = r37980 / r37987;
        double r37989 = r37985 - r37988;
        double r37990 = 6031115.829667645;
        bool r37991 = r37977 <= r37990;
        double r37992 = r37977 * r37977;
        double r37993 = r37992 + r37980;
        double r37994 = r37977 / r37993;
        double r37995 = r37991 ? r37994 : r37989;
        double r37996 = r37979 ? r37989 : r37995;
        return r37996;
}

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 r37997, r37998, r37999, r38000, r38001;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r37997);
        mpfr_init(r37998);
        mpfr_init_set_str(r37999, "1", 10, MPFR_RNDN);
        mpfr_init(r38000);
        mpfr_init(r38001);
}

double f_im(double x) {
        mpfr_set_d(r37997, x, MPFR_RNDN);
        mpfr_mul(r37998, r37997, r37997, MPFR_RNDN);
        ;
        mpfr_add(r38000, r37998, r37999, MPFR_RNDN);
        mpfr_div(r38001, r37997, r38000, MPFR_RNDN);
        return mpfr_get_d(r38001, MPFR_RNDN);
}

static mpfr_t r38002, r38003, r38004, r38005, r38006, r38007, r38008, r38009, r38010, r38011, r38012, r38013, r38014, r38015, r38016, r38017, r38018, r38019, r38020, r38021;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r38002);
        mpfr_init_set_str(r38003, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r38004);
        mpfr_init_set_str(r38005, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r38006, "5", 10, MPFR_RNDN);
        mpfr_init(r38007);
        mpfr_init(r38008);
        mpfr_init(r38009);
        mpfr_init(r38010);
        mpfr_init_set_str(r38011, "3", 10, MPFR_RNDN);
        mpfr_init(r38012);
        mpfr_init(r38013);
        mpfr_init(r38014);
        mpfr_init_set_str(r38015, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r38016);
        mpfr_init(r38017);
        mpfr_init(r38018);
        mpfr_init(r38019);
        mpfr_init(r38020);
        mpfr_init(r38021);
}

double f_fm(double x) {
        mpfr_set_d(r38002, x, MPFR_RNDN);
        ;
        mpfr_set_si(r38004, mpfr_cmp(r38002, r38003) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38007, r38002, r38006, MPFR_RNDN);
        mpfr_div(r38008, r38005, r38007, MPFR_RNDN);
        mpfr_div(r38009, r38005, r38002, MPFR_RNDN);
        mpfr_add(r38010, r38008, r38009, MPFR_RNDN);
        ;
        mpfr_pow(r38012, r38002, r38011, MPFR_RNDN);
        mpfr_div(r38013, r38005, r38012, MPFR_RNDN);
        mpfr_sub(r38014, r38010, r38013, MPFR_RNDN);
        ;
        mpfr_set_si(r38016, mpfr_cmp(r38002, r38015) <= 0, MPFR_RNDN);
        mpfr_mul(r38017, r38002, r38002, MPFR_RNDN);
        mpfr_add(r38018, r38017, r38005, MPFR_RNDN);
        mpfr_div(r38019, r38002, r38018, MPFR_RNDN);
        if (mpfr_get_si(r38016, MPFR_RNDN)) { mpfr_set(r38020, r38019, MPFR_RNDN); } else { mpfr_set(r38020, r38014, MPFR_RNDN); };
        if (mpfr_get_si(r38004, MPFR_RNDN)) { mpfr_set(r38021, r38014, MPFR_RNDN); } else { mpfr_set(r38021, r38020, MPFR_RNDN); };
        return mpfr_get_d(r38021, MPFR_RNDN);
}

static mpfr_t r38022, r38023, r38024, r38025, r38026, r38027, r38028, r38029, r38030, r38031, r38032, r38033, r38034, r38035, r38036, r38037, r38038, r38039, r38040, r38041;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r38022);
        mpfr_init_set_str(r38023, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r38024);
        mpfr_init_set_str(r38025, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r38026, "5", 10, MPFR_RNDN);
        mpfr_init(r38027);
        mpfr_init(r38028);
        mpfr_init(r38029);
        mpfr_init(r38030);
        mpfr_init_set_str(r38031, "3", 10, MPFR_RNDN);
        mpfr_init(r38032);
        mpfr_init(r38033);
        mpfr_init(r38034);
        mpfr_init_set_str(r38035, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r38036);
        mpfr_init(r38037);
        mpfr_init(r38038);
        mpfr_init(r38039);
        mpfr_init(r38040);
        mpfr_init(r38041);
}

double f_dm(double x) {
        mpfr_set_d(r38022, x, MPFR_RNDN);
        ;
        mpfr_set_si(r38024, mpfr_cmp(r38022, r38023) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38027, r38022, r38026, MPFR_RNDN);
        mpfr_div(r38028, r38025, r38027, MPFR_RNDN);
        mpfr_div(r38029, r38025, r38022, MPFR_RNDN);
        mpfr_add(r38030, r38028, r38029, MPFR_RNDN);
        ;
        mpfr_pow(r38032, r38022, r38031, MPFR_RNDN);
        mpfr_div(r38033, r38025, r38032, MPFR_RNDN);
        mpfr_sub(r38034, r38030, r38033, MPFR_RNDN);
        ;
        mpfr_set_si(r38036, mpfr_cmp(r38022, r38035) <= 0, MPFR_RNDN);
        mpfr_mul(r38037, r38022, r38022, MPFR_RNDN);
        mpfr_add(r38038, r38037, r38025, MPFR_RNDN);
        mpfr_div(r38039, r38022, r38038, MPFR_RNDN);
        if (mpfr_get_si(r38036, MPFR_RNDN)) { mpfr_set(r38040, r38039, MPFR_RNDN); } else { mpfr_set(r38040, r38034, MPFR_RNDN); };
        if (mpfr_get_si(r38024, MPFR_RNDN)) { mpfr_set(r38041, r38034, MPFR_RNDN); } else { mpfr_set(r38041, r38040, MPFR_RNDN); };
        return mpfr_get_d(r38041, MPFR_RNDN);
}

