#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 r4502510 = N;
        float r4502511 = 1.0f;
        float r4502512 = r4502510 + r4502511;
        float r4502513 = atan(r4502512);
        float r4502514 = atan(r4502510);
        float r4502515 = r4502513 - r4502514;
        return r4502515;
}

double f_id(double N) {
        double r4502516 = N;
        double r4502517 = 1.0;
        double r4502518 = r4502516 + r4502517;
        double r4502519 = atan(r4502518);
        double r4502520 = atan(r4502516);
        double r4502521 = r4502519 - r4502520;
        return r4502521;
}


double f_of(float N) {
        float r4502522 = 1.0f;
        float r4502523 = 0.0f;
        float r4502524 = r4502522 - r4502523;
        float r4502525 = N;
        float r4502526 = r4502525 * r4502525;
        float r4502527 = r4502525 + r4502526;
        float r4502528 = r4502527 + r4502522;
        float r4502529 = atan2(r4502524, r4502528);
        float r4502530 = sqrt(r4502529);
        float r4502531 = sqrt(r4502530);
        float r4502532 = r4502531 * r4502531;
        float r4502533 = r4502532 * r4502532;
        return r4502533;
}

double f_od(double N) {
        double r4502534 = 1.0;
        double r4502535 = 0.0;
        double r4502536 = r4502534 - r4502535;
        double r4502537 = N;
        double r4502538 = r4502537 * r4502537;
        double r4502539 = r4502537 + r4502538;
        double r4502540 = r4502539 + r4502534;
        double r4502541 = atan2(r4502536, r4502540);
        double r4502542 = sqrt(r4502541);
        double r4502543 = sqrt(r4502542);
        double r4502544 = r4502543 * r4502543;
        double r4502545 = r4502544 * r4502544;
        return r4502545;
}

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 r4502546, r4502547, r4502548, r4502549, r4502550, r4502551;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4502546);
        mpfr_init_set_str(r4502547, "1", 10, MPFR_RNDN);
        mpfr_init(r4502548);
        mpfr_init(r4502549);
        mpfr_init(r4502550);
        mpfr_init(r4502551);
}

double f_im(double N) {
        mpfr_set_d(r4502546, N, MPFR_RNDN);
        ;
        mpfr_add(r4502548, r4502546, r4502547, MPFR_RNDN);
        mpfr_atan(r4502549, r4502548, MPFR_RNDN);
        mpfr_atan(r4502550, r4502546, MPFR_RNDN);
        mpfr_sub(r4502551, r4502549, r4502550, MPFR_RNDN);
        return mpfr_get_d(r4502551, MPFR_RNDN);
}

static mpfr_t r4502552, r4502553, r4502554, r4502555, r4502556, r4502557, r4502558, r4502559, r4502560, r4502561, r4502562, r4502563;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4502552, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4502553, "0", 10, MPFR_RNDN);
        mpfr_init(r4502554);
        mpfr_init(r4502555);
        mpfr_init(r4502556);
        mpfr_init(r4502557);
        mpfr_init(r4502558);
        mpfr_init(r4502559);
        mpfr_init(r4502560);
        mpfr_init(r4502561);
        mpfr_init(r4502562);
        mpfr_init(r4502563);
}

double f_fm(double N) {
        ;
        ;
        mpfr_sub(r4502554, r4502552, r4502553, MPFR_RNDN);
        mpfr_set_d(r4502555, N, MPFR_RNDN);
        mpfr_sqr(r4502556, r4502555, MPFR_RNDN);
        mpfr_add(r4502557, r4502555, r4502556, MPFR_RNDN);
        mpfr_add(r4502558, r4502557, r4502552, MPFR_RNDN);
        mpfr_atan2(r4502559, r4502554, r4502558, MPFR_RNDN);
        mpfr_sqrt(r4502560, r4502559, MPFR_RNDN);
        mpfr_sqrt(r4502561, r4502560, MPFR_RNDN);
        mpfr_sqr(r4502562, r4502561, MPFR_RNDN);
        mpfr_sqr(r4502563, r4502562, MPFR_RNDN);
        return mpfr_get_d(r4502563, MPFR_RNDN);
}

static mpfr_t r4502564, r4502565, r4502566, r4502567, r4502568, r4502569, r4502570, r4502571, r4502572, r4502573, r4502574, r4502575;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4502564, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4502565, "0", 10, MPFR_RNDN);
        mpfr_init(r4502566);
        mpfr_init(r4502567);
        mpfr_init(r4502568);
        mpfr_init(r4502569);
        mpfr_init(r4502570);
        mpfr_init(r4502571);
        mpfr_init(r4502572);
        mpfr_init(r4502573);
        mpfr_init(r4502574);
        mpfr_init(r4502575);
}

double f_dm(double N) {
        ;
        ;
        mpfr_sub(r4502566, r4502564, r4502565, MPFR_RNDN);
        mpfr_set_d(r4502567, N, MPFR_RNDN);
        mpfr_sqr(r4502568, r4502567, MPFR_RNDN);
        mpfr_add(r4502569, r4502567, r4502568, MPFR_RNDN);
        mpfr_add(r4502570, r4502569, r4502564, MPFR_RNDN);
        mpfr_atan2(r4502571, r4502566, r4502570, MPFR_RNDN);
        mpfr_sqrt(r4502572, r4502571, MPFR_RNDN);
        mpfr_sqrt(r4502573, r4502572, MPFR_RNDN);
        mpfr_sqr(r4502574, r4502573, MPFR_RNDN);
        mpfr_sqr(r4502575, r4502574, MPFR_RNDN);
        return mpfr_get_d(r4502575, MPFR_RNDN);
}

