#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 r11872702 = N;
        float r11872703 = 1;
        float r11872704 = r11872702 + r11872703;
        float r11872705 = atan(r11872704);
        float r11872706 = atan(r11872702);
        float r11872707 = r11872705 - r11872706;
        return r11872707;
}

double f_id(double N) {
        double r11872708 = N;
        double r11872709 = 1;
        double r11872710 = r11872708 + r11872709;
        double r11872711 = atan(r11872710);
        double r11872712 = atan(r11872708);
        double r11872713 = r11872711 - r11872712;
        return r11872713;
}


double f_of(float N) {
        float r11872714 = 1;
        float r11872715 = 0;
        float r11872716 = r11872714 - r11872715;
        float r11872717 = N;
        float r11872718 = r11872717 + r11872714;
        float r11872719 = r11872718 * r11872717;
        float r11872720 = r11872714 + r11872719;
        float r11872721 = atan2(r11872716, r11872720);
        return r11872721;
}

double f_od(double N) {
        double r11872722 = 1;
        double r11872723 = 0;
        double r11872724 = r11872722 - r11872723;
        double r11872725 = N;
        double r11872726 = r11872725 + r11872722;
        double r11872727 = r11872726 * r11872725;
        double r11872728 = r11872722 + r11872727;
        double r11872729 = atan2(r11872724, r11872728);
        return r11872729;
}

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 r11872730, r11872731, r11872732, r11872733, r11872734, r11872735;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r11872730);
        mpfr_init_set_str(r11872731, "1", 10, MPFR_RNDN);
        mpfr_init(r11872732);
        mpfr_init(r11872733);
        mpfr_init(r11872734);
        mpfr_init(r11872735);
}

double f_im(double N) {
        mpfr_set_d(r11872730, N, MPFR_RNDN);
        ;
        mpfr_add(r11872732, r11872730, r11872731, MPFR_RNDN);
        mpfr_atan(r11872733, r11872732, MPFR_RNDN);
        mpfr_atan(r11872734, r11872730, MPFR_RNDN);
        mpfr_sub(r11872735, r11872733, r11872734, MPFR_RNDN);
        return mpfr_get_d(r11872735, MPFR_RNDN);
}

static mpfr_t r11872736, r11872737, r11872738, r11872739, r11872740, r11872741, r11872742, r11872743;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11872736, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11872737, "0", 10, MPFR_RNDN);
        mpfr_init(r11872738);
        mpfr_init(r11872739);
        mpfr_init(r11872740);
        mpfr_init(r11872741);
        mpfr_init(r11872742);
        mpfr_init(r11872743);
}

double f_fm(double N) {
        ;
        ;
        mpfr_sub(r11872738, r11872736, r11872737, MPFR_RNDN);
        mpfr_set_d(r11872739, N, MPFR_RNDN);
        mpfr_add(r11872740, r11872739, r11872736, MPFR_RNDN);
        mpfr_mul(r11872741, r11872740, r11872739, MPFR_RNDN);
        mpfr_add(r11872742, r11872736, r11872741, MPFR_RNDN);
        mpfr_atan2(r11872743, r11872738, r11872742, MPFR_RNDN);
        return mpfr_get_d(r11872743, MPFR_RNDN);
}

static mpfr_t r11872744, r11872745, r11872746, r11872747, r11872748, r11872749, r11872750, r11872751;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11872744, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11872745, "0", 10, MPFR_RNDN);
        mpfr_init(r11872746);
        mpfr_init(r11872747);
        mpfr_init(r11872748);
        mpfr_init(r11872749);
        mpfr_init(r11872750);
        mpfr_init(r11872751);
}

double f_dm(double N) {
        ;
        ;
        mpfr_sub(r11872746, r11872744, r11872745, MPFR_RNDN);
        mpfr_set_d(r11872747, N, MPFR_RNDN);
        mpfr_add(r11872748, r11872747, r11872744, MPFR_RNDN);
        mpfr_mul(r11872749, r11872748, r11872747, MPFR_RNDN);
        mpfr_add(r11872750, r11872744, r11872749, MPFR_RNDN);
        mpfr_atan2(r11872751, r11872746, r11872750, MPFR_RNDN);
        return mpfr_get_d(r11872751, MPFR_RNDN);
}

