#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 r5182611 = N;
        float r5182612 = 1.0f;
        float r5182613 = r5182611 + r5182612;
        float r5182614 = atan(r5182613);
        float r5182615 = atan(r5182611);
        float r5182616 = r5182614 - r5182615;
        return r5182616;
}

double f_id(double N) {
        double r5182617 = N;
        double r5182618 = 1.0;
        double r5182619 = r5182617 + r5182618;
        double r5182620 = atan(r5182619);
        double r5182621 = atan(r5182617);
        double r5182622 = r5182620 - r5182621;
        return r5182622;
}


double f_of(float N) {
        float r5182623 = 1.0f;
        float r5182624 = 0.0f;
        float r5182625 = r5182623 + r5182624;
        float r5182626 = N;
        float r5182627 = r5182626 * r5182626;
        float r5182628 = r5182627 + r5182626;
        float r5182629 = r5182628 + r5182623;
        float r5182630 = atan2(r5182625, r5182629);
        return r5182630;
}

double f_od(double N) {
        double r5182631 = 1.0;
        double r5182632 = 0.0;
        double r5182633 = r5182631 + r5182632;
        double r5182634 = N;
        double r5182635 = r5182634 * r5182634;
        double r5182636 = r5182635 + r5182634;
        double r5182637 = r5182636 + r5182631;
        double r5182638 = atan2(r5182633, r5182637);
        return r5182638;
}

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 r5182639, r5182640, r5182641, r5182642, r5182643, r5182644;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5182639);
        mpfr_init_set_str(r5182640, "1", 10, MPFR_RNDN);
        mpfr_init(r5182641);
        mpfr_init(r5182642);
        mpfr_init(r5182643);
        mpfr_init(r5182644);
}

double f_im(double N) {
        mpfr_set_d(r5182639, N, MPFR_RNDN);
        ;
        mpfr_add(r5182641, r5182639, r5182640, MPFR_RNDN);
        mpfr_atan(r5182642, r5182641, MPFR_RNDN);
        mpfr_atan(r5182643, r5182639, MPFR_RNDN);
        mpfr_sub(r5182644, r5182642, r5182643, MPFR_RNDN);
        return mpfr_get_d(r5182644, MPFR_RNDN);
}

static mpfr_t r5182645, r5182646, r5182647, r5182648, r5182649, r5182650, r5182651, r5182652;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5182645, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5182646, "0", 10, MPFR_RNDN);
        mpfr_init(r5182647);
        mpfr_init(r5182648);
        mpfr_init(r5182649);
        mpfr_init(r5182650);
        mpfr_init(r5182651);
        mpfr_init(r5182652);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r5182647, r5182645, r5182646, MPFR_RNDN);
        mpfr_set_d(r5182648, N, MPFR_RNDN);
        mpfr_sqr(r5182649, r5182648, MPFR_RNDN);
        mpfr_add(r5182650, r5182649, r5182648, MPFR_RNDN);
        mpfr_add(r5182651, r5182650, r5182645, MPFR_RNDN);
        mpfr_atan2(r5182652, r5182647, r5182651, MPFR_RNDN);
        return mpfr_get_d(r5182652, MPFR_RNDN);
}

static mpfr_t r5182653, r5182654, r5182655, r5182656, r5182657, r5182658, r5182659, r5182660;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5182653, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5182654, "0", 10, MPFR_RNDN);
        mpfr_init(r5182655);
        mpfr_init(r5182656);
        mpfr_init(r5182657);
        mpfr_init(r5182658);
        mpfr_init(r5182659);
        mpfr_init(r5182660);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r5182655, r5182653, r5182654, MPFR_RNDN);
        mpfr_set_d(r5182656, N, MPFR_RNDN);
        mpfr_sqr(r5182657, r5182656, MPFR_RNDN);
        mpfr_add(r5182658, r5182657, r5182656, MPFR_RNDN);
        mpfr_add(r5182659, r5182658, r5182653, MPFR_RNDN);
        mpfr_atan2(r5182660, r5182655, r5182659, MPFR_RNDN);
        return mpfr_get_d(r5182660, MPFR_RNDN);
}

