#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 r11059 = N;
        float r11060 = 1;
        float r11061 = r11059 + r11060;
        float r11062 = atan(r11061);
        float r11063 = atan(r11059);
        float r11064 = r11062 - r11063;
        return r11064;
}

double f_id(double N) {
        double r11065 = N;
        double r11066 = 1;
        double r11067 = r11065 + r11066;
        double r11068 = atan(r11067);
        double r11069 = atan(r11065);
        double r11070 = r11068 - r11069;
        return r11070;
}


double f_of(float N) {
        float r11071 = 1;
        float r11072 = N;
        float r11073 = r11072 + r11071;
        float r11074 = fma(r11072, r11073, r11071);
        float r11075 = atan2(r11071, r11074);
        return r11075;
}

double f_od(double N) {
        double r11076 = 1;
        double r11077 = N;
        double r11078 = r11077 + r11076;
        double r11079 = fma(r11077, r11078, r11076);
        double r11080 = atan2(r11076, r11079);
        return r11080;
}

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 r11081, r11082, r11083, r11084, r11085, r11086;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11081);
        mpfr_init_set_str(r11082, "1", 10, MPFR_RNDN);
        mpfr_init(r11083);
        mpfr_init(r11084);
        mpfr_init(r11085);
        mpfr_init(r11086);
}

double f_im(double N) {
        mpfr_set_d(r11081, N, MPFR_RNDN);
        ;
        mpfr_add(r11083, r11081, r11082, MPFR_RNDN);
        mpfr_atan(r11084, r11083, MPFR_RNDN);
        mpfr_atan(r11085, r11081, MPFR_RNDN);
        mpfr_sub(r11086, r11084, r11085, MPFR_RNDN);
        return mpfr_get_d(r11086, MPFR_RNDN);
}

static mpfr_t r11087, r11088, r11089, r11090, r11091;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11087, "1", 10, MPFR_RNDN);
        mpfr_init(r11088);
        mpfr_init(r11089);
        mpfr_init(r11090);
        mpfr_init(r11091);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r11088, N, MPFR_RNDN);
        mpfr_add(r11089, r11088, r11087, MPFR_RNDN);
        mpfr_fma(r11090, r11088, r11089, r11087, MPFR_RNDN);
        mpfr_atan2(r11091, r11087, r11090, MPFR_RNDN);
        return mpfr_get_d(r11091, MPFR_RNDN);
}

static mpfr_t r11092, r11093, r11094, r11095, r11096;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11092, "1", 10, MPFR_RNDN);
        mpfr_init(r11093);
        mpfr_init(r11094);
        mpfr_init(r11095);
        mpfr_init(r11096);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r11093, N, MPFR_RNDN);
        mpfr_add(r11094, r11093, r11092, MPFR_RNDN);
        mpfr_fma(r11095, r11093, r11094, r11092, MPFR_RNDN);
        mpfr_atan2(r11096, r11092, r11095, MPFR_RNDN);
        return mpfr_get_d(r11096, MPFR_RNDN);
}

