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

char *name = "2atan (example 3.5)";

double f_if(float N) {
        float r21173 = N;
        float r21174 = 1.0f;
        float r21175 = r21173 + r21174;
        float r21176 = atan(r21175);
        float r21177 = atan(r21173);
        float r21178 = r21176 - r21177;
        return r21178;
}

double f_id(double N) {
        double r21179 = N;
        double r21180 = 1.0;
        double r21181 = r21179 + r21180;
        double r21182 = atan(r21181);
        double r21183 = atan(r21179);
        double r21184 = r21182 - r21183;
        return r21184;
}


double f_of(float N) {
        float r21185 = 1.0f;
        float r21186 = 0.0f;
        float r21187 = r21185 + r21186;
        float r21188 = N;
        float r21189 = r21188 + r21185;
        float r21190 = r21189 * r21188;
        float r21191 = r21185 + r21190;
        float r21192 = atan2(r21187, r21191);
        return r21192;
}

double f_od(double N) {
        double r21193 = 1.0;
        double r21194 = 0.0;
        double r21195 = r21193 + r21194;
        double r21196 = N;
        double r21197 = r21196 + r21193;
        double r21198 = r21197 * r21196;
        double r21199 = r21193 + r21198;
        double r21200 = atan2(r21195, r21199);
        return r21200;
}

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 r21201, r21202, r21203, r21204, r21205, r21206;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21201);
        mpfr_init_set_str(r21202, "1", 10, MPFR_RNDN);
        mpfr_init(r21203);
        mpfr_init(r21204);
        mpfr_init(r21205);
        mpfr_init(r21206);
}

double f_im(double N) {
        mpfr_set_d(r21201, N, MPFR_RNDN);
        ;
        mpfr_add(r21203, r21201, r21202, MPFR_RNDN);
        mpfr_atan(r21204, r21203, MPFR_RNDN);
        mpfr_atan(r21205, r21201, MPFR_RNDN);
        mpfr_sub(r21206, r21204, r21205, MPFR_RNDN);
        return mpfr_get_d(r21206, MPFR_RNDN);
}

static mpfr_t r21207, r21208, r21209, r21210, r21211, r21212, r21213, r21214;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21207, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21208, "0", 10, MPFR_RNDN);
        mpfr_init(r21209);
        mpfr_init(r21210);
        mpfr_init(r21211);
        mpfr_init(r21212);
        mpfr_init(r21213);
        mpfr_init(r21214);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r21209, r21207, r21208, MPFR_RNDN);
        mpfr_set_d(r21210, N, MPFR_RNDN);
        mpfr_add(r21211, r21210, r21207, MPFR_RNDN);
        mpfr_mul(r21212, r21211, r21210, MPFR_RNDN);
        mpfr_add(r21213, r21207, r21212, MPFR_RNDN);
        mpfr_atan2(r21214, r21209, r21213, MPFR_RNDN);
        return mpfr_get_d(r21214, MPFR_RNDN);
}

static mpfr_t r21215, r21216, r21217, r21218, r21219, r21220, r21221, r21222;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21215, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21216, "0", 10, MPFR_RNDN);
        mpfr_init(r21217);
        mpfr_init(r21218);
        mpfr_init(r21219);
        mpfr_init(r21220);
        mpfr_init(r21221);
        mpfr_init(r21222);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r21217, r21215, r21216, MPFR_RNDN);
        mpfr_set_d(r21218, N, MPFR_RNDN);
        mpfr_add(r21219, r21218, r21215, MPFR_RNDN);
        mpfr_mul(r21220, r21219, r21218, MPFR_RNDN);
        mpfr_add(r21221, r21215, r21220, MPFR_RNDN);
        mpfr_atan2(r21222, r21217, r21221, MPFR_RNDN);
        return mpfr_get_d(r21222, MPFR_RNDN);
}

