#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 r59267 = N;
        float r59268 = 1;
        float r59269 = r59267 + r59268;
        float r59270 = atan(r59269);
        float r59271 = atan(r59267);
        float r59272 = r59270 - r59271;
        return r59272;
}

double f_id(double N) {
        double r59273 = N;
        double r59274 = 1;
        double r59275 = r59273 + r59274;
        double r59276 = atan(r59275);
        double r59277 = atan(r59273);
        double r59278 = r59276 - r59277;
        return r59278;
}


double f_of(float N) {
        float r59279 = 1;
        float r59280 = 0;
        float r59281 = r59279 + r59280;
        float r59282 = N;
        float r59283 = r59282 + r59279;
        float r59284 = r59283 * r59282;
        float r59285 = r59279 + r59284;
        float r59286 = atan2(r59281, r59285);
        return r59286;
}

double f_od(double N) {
        double r59287 = 1;
        double r59288 = 0;
        double r59289 = r59287 + r59288;
        double r59290 = N;
        double r59291 = r59290 + r59287;
        double r59292 = r59291 * r59290;
        double r59293 = r59287 + r59292;
        double r59294 = atan2(r59289, r59293);
        return r59294;
}

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 r59295, r59296, r59297, r59298, r59299, r59300;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r59295);
        mpfr_init_set_str(r59296, "1", 10, MPFR_RNDN);
        mpfr_init(r59297);
        mpfr_init(r59298);
        mpfr_init(r59299);
        mpfr_init(r59300);
}

double f_im(double N) {
        mpfr_set_d(r59295, N, MPFR_RNDN);
        ;
        mpfr_add(r59297, r59295, r59296, MPFR_RNDN);
        mpfr_atan(r59298, r59297, MPFR_RNDN);
        mpfr_atan(r59299, r59295, MPFR_RNDN);
        mpfr_sub(r59300, r59298, r59299, MPFR_RNDN);
        return mpfr_get_d(r59300, MPFR_RNDN);
}

static mpfr_t r59301, r59302, r59303, r59304, r59305, r59306, r59307, r59308;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59301, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59302, "0", 10, MPFR_RNDN);
        mpfr_init(r59303);
        mpfr_init(r59304);
        mpfr_init(r59305);
        mpfr_init(r59306);
        mpfr_init(r59307);
        mpfr_init(r59308);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r59303, r59301, r59302, MPFR_RNDN);
        mpfr_set_d(r59304, N, MPFR_RNDN);
        mpfr_add(r59305, r59304, r59301, MPFR_RNDN);
        mpfr_mul(r59306, r59305, r59304, MPFR_RNDN);
        mpfr_add(r59307, r59301, r59306, MPFR_RNDN);
        mpfr_atan2(r59308, r59303, r59307, MPFR_RNDN);
        return mpfr_get_d(r59308, MPFR_RNDN);
}

static mpfr_t r59309, r59310, r59311, r59312, r59313, r59314, r59315, r59316;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59309, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59310, "0", 10, MPFR_RNDN);
        mpfr_init(r59311);
        mpfr_init(r59312);
        mpfr_init(r59313);
        mpfr_init(r59314);
        mpfr_init(r59315);
        mpfr_init(r59316);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r59311, r59309, r59310, MPFR_RNDN);
        mpfr_set_d(r59312, N, MPFR_RNDN);
        mpfr_add(r59313, r59312, r59309, MPFR_RNDN);
        mpfr_mul(r59314, r59313, r59312, MPFR_RNDN);
        mpfr_add(r59315, r59309, r59314, MPFR_RNDN);
        mpfr_atan2(r59316, r59311, r59315, MPFR_RNDN);
        return mpfr_get_d(r59316, MPFR_RNDN);
}

