#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 r59113 = N;
        float r59114 = 1;
        float r59115 = r59113 + r59114;
        float r59116 = atan(r59115);
        float r59117 = atan(r59113);
        float r59118 = r59116 - r59117;
        return r59118;
}

double f_id(double N) {
        double r59119 = N;
        double r59120 = 1;
        double r59121 = r59119 + r59120;
        double r59122 = atan(r59121);
        double r59123 = atan(r59119);
        double r59124 = r59122 - r59123;
        return r59124;
}


double f_of(float N) {
        float r59125 = 1;
        float r59126 = 0;
        float r59127 = r59125 + r59126;
        float r59128 = N;
        float r59129 = r59128 + r59125;
        float r59130 = r59129 * r59128;
        float r59131 = r59125 + r59130;
        float r59132 = atan2(r59127, r59131);
        return r59132;
}

double f_od(double N) {
        double r59133 = 1;
        double r59134 = 0;
        double r59135 = r59133 + r59134;
        double r59136 = N;
        double r59137 = r59136 + r59133;
        double r59138 = r59137 * r59136;
        double r59139 = r59133 + r59138;
        double r59140 = atan2(r59135, r59139);
        return r59140;
}

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 r59141, r59142, r59143, r59144, r59145, r59146;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r59141);
        mpfr_init_set_str(r59142, "1", 10, MPFR_RNDN);
        mpfr_init(r59143);
        mpfr_init(r59144);
        mpfr_init(r59145);
        mpfr_init(r59146);
}

double f_im(double N) {
        mpfr_set_d(r59141, N, MPFR_RNDN);
        ;
        mpfr_add(r59143, r59141, r59142, MPFR_RNDN);
        mpfr_atan(r59144, r59143, MPFR_RNDN);
        mpfr_atan(r59145, r59141, MPFR_RNDN);
        mpfr_sub(r59146, r59144, r59145, MPFR_RNDN);
        return mpfr_get_d(r59146, MPFR_RNDN);
}

static mpfr_t r59147, r59148, r59149, r59150, r59151, r59152, r59153, r59154;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59147, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59148, "0", 10, MPFR_RNDN);
        mpfr_init(r59149);
        mpfr_init(r59150);
        mpfr_init(r59151);
        mpfr_init(r59152);
        mpfr_init(r59153);
        mpfr_init(r59154);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r59149, r59147, r59148, MPFR_RNDN);
        mpfr_set_d(r59150, N, MPFR_RNDN);
        mpfr_add(r59151, r59150, r59147, MPFR_RNDN);
        mpfr_mul(r59152, r59151, r59150, MPFR_RNDN);
        mpfr_add(r59153, r59147, r59152, MPFR_RNDN);
        mpfr_atan2(r59154, r59149, r59153, MPFR_RNDN);
        return mpfr_get_d(r59154, MPFR_RNDN);
}

static mpfr_t r59155, r59156, r59157, r59158, r59159, r59160, r59161, r59162;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59155, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59156, "0", 10, MPFR_RNDN);
        mpfr_init(r59157);
        mpfr_init(r59158);
        mpfr_init(r59159);
        mpfr_init(r59160);
        mpfr_init(r59161);
        mpfr_init(r59162);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r59157, r59155, r59156, MPFR_RNDN);
        mpfr_set_d(r59158, N, MPFR_RNDN);
        mpfr_add(r59159, r59158, r59155, MPFR_RNDN);
        mpfr_mul(r59160, r59159, r59158, MPFR_RNDN);
        mpfr_add(r59161, r59155, r59160, MPFR_RNDN);
        mpfr_atan2(r59162, r59157, r59161, MPFR_RNDN);
        return mpfr_get_d(r59162, MPFR_RNDN);
}

