#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 r4876631 = N;
        float r4876632 = 1.0f;
        float r4876633 = r4876631 + r4876632;
        float r4876634 = atan(r4876633);
        float r4876635 = atan(r4876631);
        float r4876636 = r4876634 - r4876635;
        return r4876636;
}

double f_id(double N) {
        double r4876637 = N;
        double r4876638 = 1.0;
        double r4876639 = r4876637 + r4876638;
        double r4876640 = atan(r4876639);
        double r4876641 = atan(r4876637);
        double r4876642 = r4876640 - r4876641;
        return r4876642;
}


double f_of(float N) {
        float r4876643 = 1.0f;
        float r4876644 = 0.0f;
        float r4876645 = r4876643 - r4876644;
        float r4876646 = N;
        float r4876647 = r4876646 + r4876643;
        float r4876648 = r4876647 * r4876646;
        float r4876649 = r4876643 + r4876648;
        float r4876650 = atan2(r4876645, r4876649);
        return r4876650;
}

double f_od(double N) {
        double r4876651 = 1.0;
        double r4876652 = 0.0;
        double r4876653 = r4876651 - r4876652;
        double r4876654 = N;
        double r4876655 = r4876654 + r4876651;
        double r4876656 = r4876655 * r4876654;
        double r4876657 = r4876651 + r4876656;
        double r4876658 = atan2(r4876653, r4876657);
        return r4876658;
}

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 r4876659, r4876660, r4876661, r4876662, r4876663, r4876664;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4876659);
        mpfr_init_set_str(r4876660, "1", 10, MPFR_RNDN);
        mpfr_init(r4876661);
        mpfr_init(r4876662);
        mpfr_init(r4876663);
        mpfr_init(r4876664);
}

double f_im(double N) {
        mpfr_set_d(r4876659, N, MPFR_RNDN);
        ;
        mpfr_add(r4876661, r4876659, r4876660, MPFR_RNDN);
        mpfr_atan(r4876662, r4876661, MPFR_RNDN);
        mpfr_atan(r4876663, r4876659, MPFR_RNDN);
        mpfr_sub(r4876664, r4876662, r4876663, MPFR_RNDN);
        return mpfr_get_d(r4876664, MPFR_RNDN);
}

static mpfr_t r4876665, r4876666, r4876667, r4876668, r4876669, r4876670, r4876671, r4876672;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4876665, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4876666, "0", 10, MPFR_RNDN);
        mpfr_init(r4876667);
        mpfr_init(r4876668);
        mpfr_init(r4876669);
        mpfr_init(r4876670);
        mpfr_init(r4876671);
        mpfr_init(r4876672);
}

double f_fm(double N) {
        ;
        ;
        mpfr_sub(r4876667, r4876665, r4876666, MPFR_RNDN);
        mpfr_set_d(r4876668, N, MPFR_RNDN);
        mpfr_add(r4876669, r4876668, r4876665, MPFR_RNDN);
        mpfr_mul(r4876670, r4876669, r4876668, MPFR_RNDN);
        mpfr_add(r4876671, r4876665, r4876670, MPFR_RNDN);
        mpfr_atan2(r4876672, r4876667, r4876671, MPFR_RNDN);
        return mpfr_get_d(r4876672, MPFR_RNDN);
}

static mpfr_t r4876673, r4876674, r4876675, r4876676, r4876677, r4876678, r4876679, r4876680;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4876673, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4876674, "0", 10, MPFR_RNDN);
        mpfr_init(r4876675);
        mpfr_init(r4876676);
        mpfr_init(r4876677);
        mpfr_init(r4876678);
        mpfr_init(r4876679);
        mpfr_init(r4876680);
}

double f_dm(double N) {
        ;
        ;
        mpfr_sub(r4876675, r4876673, r4876674, MPFR_RNDN);
        mpfr_set_d(r4876676, N, MPFR_RNDN);
        mpfr_add(r4876677, r4876676, r4876673, MPFR_RNDN);
        mpfr_mul(r4876678, r4876677, r4876676, MPFR_RNDN);
        mpfr_add(r4876679, r4876673, r4876678, MPFR_RNDN);
        mpfr_atan2(r4876680, r4876675, r4876679, MPFR_RNDN);
        return mpfr_get_d(r4876680, MPFR_RNDN);
}

