#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 r5354928 = N;
        float r5354929 = 1.0f;
        float r5354930 = r5354928 + r5354929;
        float r5354931 = atan(r5354930);
        float r5354932 = atan(r5354928);
        float r5354933 = r5354931 - r5354932;
        return r5354933;
}

double f_id(double N) {
        double r5354934 = N;
        double r5354935 = 1.0;
        double r5354936 = r5354934 + r5354935;
        double r5354937 = atan(r5354936);
        double r5354938 = atan(r5354934);
        double r5354939 = r5354937 - r5354938;
        return r5354939;
}


double f_of(float N) {
        float r5354940 = 1.0f;
        float r5354941 = 0.0f;
        float r5354942 = r5354940 + r5354941;
        float r5354943 = N;
        float r5354944 = r5354943 * r5354943;
        float r5354945 = r5354944 + r5354943;
        float r5354946 = r5354945 + r5354940;
        float r5354947 = atan2(r5354942, r5354946);
        return r5354947;
}

double f_od(double N) {
        double r5354948 = 1.0;
        double r5354949 = 0.0;
        double r5354950 = r5354948 + r5354949;
        double r5354951 = N;
        double r5354952 = r5354951 * r5354951;
        double r5354953 = r5354952 + r5354951;
        double r5354954 = r5354953 + r5354948;
        double r5354955 = atan2(r5354950, r5354954);
        return r5354955;
}

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 r5354956, r5354957, r5354958, r5354959, r5354960, r5354961;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354956);
        mpfr_init_set_str(r5354957, "1", 10, MPFR_RNDN);
        mpfr_init(r5354958);
        mpfr_init(r5354959);
        mpfr_init(r5354960);
        mpfr_init(r5354961);
}

double f_im(double N) {
        mpfr_set_d(r5354956, N, MPFR_RNDN);
        ;
        mpfr_add(r5354958, r5354956, r5354957, MPFR_RNDN);
        mpfr_atan(r5354959, r5354958, MPFR_RNDN);
        mpfr_atan(r5354960, r5354956, MPFR_RNDN);
        mpfr_sub(r5354961, r5354959, r5354960, MPFR_RNDN);
        return mpfr_get_d(r5354961, MPFR_RNDN);
}

static mpfr_t r5354962, r5354963, r5354964, r5354965, r5354966, r5354967, r5354968, r5354969;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5354962, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5354963, "0", 10, MPFR_RNDN);
        mpfr_init(r5354964);
        mpfr_init(r5354965);
        mpfr_init(r5354966);
        mpfr_init(r5354967);
        mpfr_init(r5354968);
        mpfr_init(r5354969);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r5354964, r5354962, r5354963, MPFR_RNDN);
        mpfr_set_d(r5354965, N, MPFR_RNDN);
        mpfr_sqr(r5354966, r5354965, MPFR_RNDN);
        mpfr_add(r5354967, r5354966, r5354965, MPFR_RNDN);
        mpfr_add(r5354968, r5354967, r5354962, MPFR_RNDN);
        mpfr_atan2(r5354969, r5354964, r5354968, MPFR_RNDN);
        return mpfr_get_d(r5354969, MPFR_RNDN);
}

static mpfr_t r5354970, r5354971, r5354972, r5354973, r5354974, r5354975, r5354976, r5354977;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5354970, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5354971, "0", 10, MPFR_RNDN);
        mpfr_init(r5354972);
        mpfr_init(r5354973);
        mpfr_init(r5354974);
        mpfr_init(r5354975);
        mpfr_init(r5354976);
        mpfr_init(r5354977);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r5354972, r5354970, r5354971, MPFR_RNDN);
        mpfr_set_d(r5354973, N, MPFR_RNDN);
        mpfr_sqr(r5354974, r5354973, MPFR_RNDN);
        mpfr_add(r5354975, r5354974, r5354973, MPFR_RNDN);
        mpfr_add(r5354976, r5354975, r5354970, MPFR_RNDN);
        mpfr_atan2(r5354977, r5354972, r5354976, MPFR_RNDN);
        return mpfr_get_d(r5354977, MPFR_RNDN);
}

