#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 r5320749 = N;
        float r5320750 = 1.0f;
        float r5320751 = r5320749 + r5320750;
        float r5320752 = atan(r5320751);
        float r5320753 = atan(r5320749);
        float r5320754 = r5320752 - r5320753;
        return r5320754;
}

double f_id(double N) {
        double r5320755 = N;
        double r5320756 = 1.0;
        double r5320757 = r5320755 + r5320756;
        double r5320758 = atan(r5320757);
        double r5320759 = atan(r5320755);
        double r5320760 = r5320758 - r5320759;
        return r5320760;
}


double f_of(float N) {
        float r5320761 = 1.0f;
        float r5320762 = 0.0f;
        float r5320763 = r5320761 + r5320762;
        float r5320764 = N;
        float r5320765 = r5320764 * r5320764;
        float r5320766 = r5320765 + r5320764;
        float r5320767 = r5320766 + r5320761;
        float r5320768 = atan2(r5320763, r5320767);
        return r5320768;
}

double f_od(double N) {
        double r5320769 = 1.0;
        double r5320770 = 0.0;
        double r5320771 = r5320769 + r5320770;
        double r5320772 = N;
        double r5320773 = r5320772 * r5320772;
        double r5320774 = r5320773 + r5320772;
        double r5320775 = r5320774 + r5320769;
        double r5320776 = atan2(r5320771, r5320775);
        return r5320776;
}

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 r5320777, r5320778, r5320779, r5320780, r5320781, r5320782;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5320777);
        mpfr_init_set_str(r5320778, "1", 10, MPFR_RNDN);
        mpfr_init(r5320779);
        mpfr_init(r5320780);
        mpfr_init(r5320781);
        mpfr_init(r5320782);
}

double f_im(double N) {
        mpfr_set_d(r5320777, N, MPFR_RNDN);
        ;
        mpfr_add(r5320779, r5320777, r5320778, MPFR_RNDN);
        mpfr_atan(r5320780, r5320779, MPFR_RNDN);
        mpfr_atan(r5320781, r5320777, MPFR_RNDN);
        mpfr_sub(r5320782, r5320780, r5320781, MPFR_RNDN);
        return mpfr_get_d(r5320782, MPFR_RNDN);
}

static mpfr_t r5320783, r5320784, r5320785, r5320786, r5320787, r5320788, r5320789, r5320790;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5320783, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5320784, "0", 10, MPFR_RNDN);
        mpfr_init(r5320785);
        mpfr_init(r5320786);
        mpfr_init(r5320787);
        mpfr_init(r5320788);
        mpfr_init(r5320789);
        mpfr_init(r5320790);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r5320785, r5320783, r5320784, MPFR_RNDN);
        mpfr_set_d(r5320786, N, MPFR_RNDN);
        mpfr_sqr(r5320787, r5320786, MPFR_RNDN);
        mpfr_add(r5320788, r5320787, r5320786, MPFR_RNDN);
        mpfr_add(r5320789, r5320788, r5320783, MPFR_RNDN);
        mpfr_atan2(r5320790, r5320785, r5320789, MPFR_RNDN);
        return mpfr_get_d(r5320790, MPFR_RNDN);
}

static mpfr_t r5320791, r5320792, r5320793, r5320794, r5320795, r5320796, r5320797, r5320798;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5320791, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5320792, "0", 10, MPFR_RNDN);
        mpfr_init(r5320793);
        mpfr_init(r5320794);
        mpfr_init(r5320795);
        mpfr_init(r5320796);
        mpfr_init(r5320797);
        mpfr_init(r5320798);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r5320793, r5320791, r5320792, MPFR_RNDN);
        mpfr_set_d(r5320794, N, MPFR_RNDN);
        mpfr_sqr(r5320795, r5320794, MPFR_RNDN);
        mpfr_add(r5320796, r5320795, r5320794, MPFR_RNDN);
        mpfr_add(r5320797, r5320796, r5320791, MPFR_RNDN);
        mpfr_atan2(r5320798, r5320793, r5320797, MPFR_RNDN);
        return mpfr_get_d(r5320798, MPFR_RNDN);
}

