#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 r27360 = N;
        float r27361 = 1;
        float r27362 = r27360 + r27361;
        float r27363 = atan(r27362);
        float r27364 = atan(r27360);
        float r27365 = r27363 - r27364;
        return r27365;
}

double f_id(double N) {
        double r27366 = N;
        double r27367 = 1;
        double r27368 = r27366 + r27367;
        double r27369 = atan(r27368);
        double r27370 = atan(r27366);
        double r27371 = r27369 - r27370;
        return r27371;
}


double f_of(float N) {
        float r27372 = 1;
        float r27373 = N;
        float r27374 = r27373 + r27372;
        float r27375 = fma(r27374, r27373, r27372);
        float r27376 = atan2(r27372, r27375);
        return r27376;
}

double f_od(double N) {
        double r27377 = 1;
        double r27378 = N;
        double r27379 = r27378 + r27377;
        double r27380 = fma(r27379, r27378, r27377);
        double r27381 = atan2(r27377, r27380);
        return r27381;
}

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 r27382, r27383, r27384, r27385, r27386, r27387;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27382);
        mpfr_init_set_str(r27383, "1", 10, MPFR_RNDN);
        mpfr_init(r27384);
        mpfr_init(r27385);
        mpfr_init(r27386);
        mpfr_init(r27387);
}

double f_im(double N) {
        mpfr_set_d(r27382, N, MPFR_RNDN);
        ;
        mpfr_add(r27384, r27382, r27383, MPFR_RNDN);
        mpfr_atan(r27385, r27384, MPFR_RNDN);
        mpfr_atan(r27386, r27382, MPFR_RNDN);
        mpfr_sub(r27387, r27385, r27386, MPFR_RNDN);
        return mpfr_get_d(r27387, MPFR_RNDN);
}

static mpfr_t r27388, r27389, r27390, r27391, r27392;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27388, "1", 10, MPFR_RNDN);
        mpfr_init(r27389);
        mpfr_init(r27390);
        mpfr_init(r27391);
        mpfr_init(r27392);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r27389, N, MPFR_RNDN);
        mpfr_add(r27390, r27389, r27388, MPFR_RNDN);
        mpfr_fma(r27391, r27390, r27389, r27388, MPFR_RNDN);
        mpfr_atan2(r27392, r27388, r27391, MPFR_RNDN);
        return mpfr_get_d(r27392, MPFR_RNDN);
}

static mpfr_t r27393, r27394, r27395, r27396, r27397;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27393, "1", 10, MPFR_RNDN);
        mpfr_init(r27394);
        mpfr_init(r27395);
        mpfr_init(r27396);
        mpfr_init(r27397);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r27394, N, MPFR_RNDN);
        mpfr_add(r27395, r27394, r27393, MPFR_RNDN);
        mpfr_fma(r27396, r27395, r27394, r27393, MPFR_RNDN);
        mpfr_atan2(r27397, r27393, r27396, MPFR_RNDN);
        return mpfr_get_d(r27397, MPFR_RNDN);
}

