#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 r6216509 = N;
        float r6216510 = 1;
        float r6216511 = r6216509 + r6216510;
        float r6216512 = atan(r6216511);
        float r6216513 = atan(r6216509);
        float r6216514 = r6216512 - r6216513;
        return r6216514;
}

double f_id(double N) {
        double r6216515 = N;
        double r6216516 = 1;
        double r6216517 = r6216515 + r6216516;
        double r6216518 = atan(r6216517);
        double r6216519 = atan(r6216515);
        double r6216520 = r6216518 - r6216519;
        return r6216520;
}


double f_of(float N) {
        float r6216521 = 1;
        float r6216522 = 0;
        float r6216523 = r6216521 - r6216522;
        float r6216524 = N;
        float r6216525 = r6216524 + r6216521;
        float r6216526 = r6216525 * r6216524;
        float r6216527 = r6216521 + r6216526;
        float r6216528 = atan2(r6216523, r6216527);
        return r6216528;
}

double f_od(double N) {
        double r6216529 = 1;
        double r6216530 = 0;
        double r6216531 = r6216529 - r6216530;
        double r6216532 = N;
        double r6216533 = r6216532 + r6216529;
        double r6216534 = r6216533 * r6216532;
        double r6216535 = r6216529 + r6216534;
        double r6216536 = atan2(r6216531, r6216535);
        return r6216536;
}

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 r6216537, r6216538, r6216539, r6216540, r6216541, r6216542;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r6216537);
        mpfr_init_set_str(r6216538, "1", 10, MPFR_RNDN);
        mpfr_init(r6216539);
        mpfr_init(r6216540);
        mpfr_init(r6216541);
        mpfr_init(r6216542);
}

double f_im(double N) {
        mpfr_set_d(r6216537, N, MPFR_RNDN);
        ;
        mpfr_add(r6216539, r6216537, r6216538, MPFR_RNDN);
        mpfr_atan(r6216540, r6216539, MPFR_RNDN);
        mpfr_atan(r6216541, r6216537, MPFR_RNDN);
        mpfr_sub(r6216542, r6216540, r6216541, MPFR_RNDN);
        return mpfr_get_d(r6216542, MPFR_RNDN);
}

static mpfr_t r6216543, r6216544, r6216545, r6216546, r6216547, r6216548, r6216549, r6216550;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r6216543, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r6216544, "0", 10, MPFR_RNDN);
        mpfr_init(r6216545);
        mpfr_init(r6216546);
        mpfr_init(r6216547);
        mpfr_init(r6216548);
        mpfr_init(r6216549);
        mpfr_init(r6216550);
}

double f_fm(double N) {
        ;
        ;
        mpfr_sub(r6216545, r6216543, r6216544, MPFR_RNDN);
        mpfr_set_d(r6216546, N, MPFR_RNDN);
        mpfr_add(r6216547, r6216546, r6216543, MPFR_RNDN);
        mpfr_mul(r6216548, r6216547, r6216546, MPFR_RNDN);
        mpfr_add(r6216549, r6216543, r6216548, MPFR_RNDN);
        mpfr_atan2(r6216550, r6216545, r6216549, MPFR_RNDN);
        return mpfr_get_d(r6216550, MPFR_RNDN);
}

static mpfr_t r6216551, r6216552, r6216553, r6216554, r6216555, r6216556, r6216557, r6216558;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r6216551, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r6216552, "0", 10, MPFR_RNDN);
        mpfr_init(r6216553);
        mpfr_init(r6216554);
        mpfr_init(r6216555);
        mpfr_init(r6216556);
        mpfr_init(r6216557);
        mpfr_init(r6216558);
}

double f_dm(double N) {
        ;
        ;
        mpfr_sub(r6216553, r6216551, r6216552, MPFR_RNDN);
        mpfr_set_d(r6216554, N, MPFR_RNDN);
        mpfr_add(r6216555, r6216554, r6216551, MPFR_RNDN);
        mpfr_mul(r6216556, r6216555, r6216554, MPFR_RNDN);
        mpfr_add(r6216557, r6216551, r6216556, MPFR_RNDN);
        mpfr_atan2(r6216558, r6216553, r6216557, MPFR_RNDN);
        return mpfr_get_d(r6216558, MPFR_RNDN);
}

