#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 r27275 = N;
        float r27276 = 1;
        float r27277 = r27275 + r27276;
        float r27278 = atan(r27277);
        float r27279 = atan(r27275);
        float r27280 = r27278 - r27279;
        return r27280;
}

double f_id(double N) {
        double r27281 = N;
        double r27282 = 1;
        double r27283 = r27281 + r27282;
        double r27284 = atan(r27283);
        double r27285 = atan(r27281);
        double r27286 = r27284 - r27285;
        return r27286;
}


double f_of(float N) {
        float r27287 = 1;
        float r27288 = N;
        float r27289 = r27288 + r27287;
        float r27290 = fma(r27289, r27288, r27287);
        float r27291 = atan2(r27287, r27290);
        return r27291;
}

double f_od(double N) {
        double r27292 = 1;
        double r27293 = N;
        double r27294 = r27293 + r27292;
        double r27295 = fma(r27294, r27293, r27292);
        double r27296 = atan2(r27292, r27295);
        return r27296;
}

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 r27297, r27298, r27299, r27300, r27301, r27302;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27297);
        mpfr_init_set_str(r27298, "1", 10, MPFR_RNDN);
        mpfr_init(r27299);
        mpfr_init(r27300);
        mpfr_init(r27301);
        mpfr_init(r27302);
}

double f_im(double N) {
        mpfr_set_d(r27297, N, MPFR_RNDN);
        ;
        mpfr_add(r27299, r27297, r27298, MPFR_RNDN);
        mpfr_atan(r27300, r27299, MPFR_RNDN);
        mpfr_atan(r27301, r27297, MPFR_RNDN);
        mpfr_sub(r27302, r27300, r27301, MPFR_RNDN);
        return mpfr_get_d(r27302, MPFR_RNDN);
}

static mpfr_t r27303, r27304, r27305, r27306, r27307;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27303, "1", 10, MPFR_RNDN);
        mpfr_init(r27304);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r27304, N, MPFR_RNDN);
        mpfr_add(r27305, r27304, r27303, MPFR_RNDN);
        mpfr_fma(r27306, r27305, r27304, r27303, MPFR_RNDN);
        mpfr_atan2(r27307, r27303, r27306, MPFR_RNDN);
        return mpfr_get_d(r27307, MPFR_RNDN);
}

static mpfr_t r27308, r27309, r27310, r27311, r27312;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27308, "1", 10, MPFR_RNDN);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r27309, N, MPFR_RNDN);
        mpfr_add(r27310, r27309, r27308, MPFR_RNDN);
        mpfr_fma(r27311, r27310, r27309, r27308, MPFR_RNDN);
        mpfr_atan2(r27312, r27308, r27311, MPFR_RNDN);
        return mpfr_get_d(r27312, MPFR_RNDN);
}

