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

char *name = "NMSE example 3.5";

double f_if(float N) {
        float r4619956 = N;
        float r4619957 = 1.0f;
        float r4619958 = r4619956 + r4619957;
        float r4619959 = atan(r4619958);
        float r4619960 = atan(r4619956);
        float r4619961 = r4619959 - r4619960;
        return r4619961;
}

double f_id(double N) {
        double r4619962 = N;
        double r4619963 = 1.0;
        double r4619964 = r4619962 + r4619963;
        double r4619965 = atan(r4619964);
        double r4619966 = atan(r4619962);
        double r4619967 = r4619965 - r4619966;
        return r4619967;
}


double f_of(float N) {
        float r4619968 = 1.0f;
        float r4619969 = 0.0f;
        float r4619970 = r4619968 + r4619969;
        float r4619971 = N;
        float r4619972 = r4619971 * r4619971;
        float r4619973 = r4619972 + r4619971;
        float r4619974 = r4619973 + r4619968;
        float r4619975 = atan2(r4619970, r4619974);
        return r4619975;
}

double f_od(double N) {
        double r4619976 = 1.0;
        double r4619977 = 0.0;
        double r4619978 = r4619976 + r4619977;
        double r4619979 = N;
        double r4619980 = r4619979 * r4619979;
        double r4619981 = r4619980 + r4619979;
        double r4619982 = r4619981 + r4619976;
        double r4619983 = atan2(r4619978, r4619982);
        return r4619983;
}

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 r4619984, r4619985, r4619986, r4619987, r4619988, r4619989;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4619984);
        mpfr_init_set_str(r4619985, "1", 10, MPFR_RNDN);
        mpfr_init(r4619986);
        mpfr_init(r4619987);
        mpfr_init(r4619988);
        mpfr_init(r4619989);
}

double f_im(double N) {
        mpfr_set_d(r4619984, N, MPFR_RNDN);
        ;
        mpfr_add(r4619986, r4619984, r4619985, MPFR_RNDN);
        mpfr_atan(r4619987, r4619986, MPFR_RNDN);
        mpfr_atan(r4619988, r4619984, MPFR_RNDN);
        mpfr_sub(r4619989, r4619987, r4619988, MPFR_RNDN);
        return mpfr_get_d(r4619989, MPFR_RNDN);
}

static mpfr_t r4619990, r4619991, r4619992, r4619993, r4619994, r4619995, r4619996, r4619997;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4619990, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4619991, "0", 10, MPFR_RNDN);
        mpfr_init(r4619992);
        mpfr_init(r4619993);
        mpfr_init(r4619994);
        mpfr_init(r4619995);
        mpfr_init(r4619996);
        mpfr_init(r4619997);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r4619992, r4619990, r4619991, MPFR_RNDN);
        mpfr_set_d(r4619993, N, MPFR_RNDN);
        mpfr_sqr(r4619994, r4619993, MPFR_RNDN);
        mpfr_add(r4619995, r4619994, r4619993, MPFR_RNDN);
        mpfr_add(r4619996, r4619995, r4619990, MPFR_RNDN);
        mpfr_atan2(r4619997, r4619992, r4619996, MPFR_RNDN);
        return mpfr_get_d(r4619997, MPFR_RNDN);
}

static mpfr_t r4619998, r4619999, r4620000, r4620001, r4620002, r4620003, r4620004, r4620005;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4619998, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4619999, "0", 10, MPFR_RNDN);
        mpfr_init(r4620000);
        mpfr_init(r4620001);
        mpfr_init(r4620002);
        mpfr_init(r4620003);
        mpfr_init(r4620004);
        mpfr_init(r4620005);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r4620000, r4619998, r4619999, MPFR_RNDN);
        mpfr_set_d(r4620001, N, MPFR_RNDN);
        mpfr_sqr(r4620002, r4620001, MPFR_RNDN);
        mpfr_add(r4620003, r4620002, r4620001, MPFR_RNDN);
        mpfr_add(r4620004, r4620003, r4619998, MPFR_RNDN);
        mpfr_atan2(r4620005, r4620000, r4620004, MPFR_RNDN);
        return mpfr_get_d(r4620005, MPFR_RNDN);
}

