#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 r4941622 = N;
        float r4941623 = 1.0f;
        float r4941624 = r4941622 + r4941623;
        float r4941625 = atan(r4941624);
        float r4941626 = atan(r4941622);
        float r4941627 = r4941625 - r4941626;
        return r4941627;
}

double f_id(double N) {
        double r4941628 = N;
        double r4941629 = 1.0;
        double r4941630 = r4941628 + r4941629;
        double r4941631 = atan(r4941630);
        double r4941632 = atan(r4941628);
        double r4941633 = r4941631 - r4941632;
        return r4941633;
}


double f_of(float N) {
        float r4941634 = 1.0f;
        float r4941635 = 0.0f;
        float r4941636 = r4941634 + r4941635;
        float r4941637 = N;
        float r4941638 = r4941637 + r4941634;
        float r4941639 = r4941638 * r4941637;
        float r4941640 = r4941639 + r4941634;
        float r4941641 = atan2(r4941636, r4941640);
        return r4941641;
}

double f_od(double N) {
        double r4941642 = 1.0;
        double r4941643 = 0.0;
        double r4941644 = r4941642 + r4941643;
        double r4941645 = N;
        double r4941646 = r4941645 + r4941642;
        double r4941647 = r4941646 * r4941645;
        double r4941648 = r4941647 + r4941642;
        double r4941649 = atan2(r4941644, r4941648);
        return r4941649;
}

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 r4941650, r4941651, r4941652, r4941653, r4941654, r4941655;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4941650);
        mpfr_init_set_str(r4941651, "1", 10, MPFR_RNDN);
        mpfr_init(r4941652);
        mpfr_init(r4941653);
        mpfr_init(r4941654);
        mpfr_init(r4941655);
}

double f_im(double N) {
        mpfr_set_d(r4941650, N, MPFR_RNDN);
        ;
        mpfr_add(r4941652, r4941650, r4941651, MPFR_RNDN);
        mpfr_atan(r4941653, r4941652, MPFR_RNDN);
        mpfr_atan(r4941654, r4941650, MPFR_RNDN);
        mpfr_sub(r4941655, r4941653, r4941654, MPFR_RNDN);
        return mpfr_get_d(r4941655, MPFR_RNDN);
}

static mpfr_t r4941656, r4941657, r4941658, r4941659, r4941660, r4941661, r4941662, r4941663;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4941656, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4941657, "0", 10, MPFR_RNDN);
        mpfr_init(r4941658);
        mpfr_init(r4941659);
        mpfr_init(r4941660);
        mpfr_init(r4941661);
        mpfr_init(r4941662);
        mpfr_init(r4941663);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r4941658, r4941656, r4941657, MPFR_RNDN);
        mpfr_set_d(r4941659, N, MPFR_RNDN);
        mpfr_add(r4941660, r4941659, r4941656, MPFR_RNDN);
        mpfr_mul(r4941661, r4941660, r4941659, MPFR_RNDN);
        mpfr_add(r4941662, r4941661, r4941656, MPFR_RNDN);
        mpfr_atan2(r4941663, r4941658, r4941662, MPFR_RNDN);
        return mpfr_get_d(r4941663, MPFR_RNDN);
}

static mpfr_t r4941664, r4941665, r4941666, r4941667, r4941668, r4941669, r4941670, r4941671;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4941664, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4941665, "0", 10, MPFR_RNDN);
        mpfr_init(r4941666);
        mpfr_init(r4941667);
        mpfr_init(r4941668);
        mpfr_init(r4941669);
        mpfr_init(r4941670);
        mpfr_init(r4941671);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r4941666, r4941664, r4941665, MPFR_RNDN);
        mpfr_set_d(r4941667, N, MPFR_RNDN);
        mpfr_add(r4941668, r4941667, r4941664, MPFR_RNDN);
        mpfr_mul(r4941669, r4941668, r4941667, MPFR_RNDN);
        mpfr_add(r4941670, r4941669, r4941664, MPFR_RNDN);
        mpfr_atan2(r4941671, r4941666, r4941670, MPFR_RNDN);
        return mpfr_get_d(r4941671, MPFR_RNDN);
}

