#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 r58649 = N;
        float r58650 = 1.0f;
        float r58651 = r58649 + r58650;
        float r58652 = atan(r58651);
        float r58653 = atan(r58649);
        float r58654 = r58652 - r58653;
        return r58654;
}

double f_id(double N) {
        double r58655 = N;
        double r58656 = 1.0;
        double r58657 = r58655 + r58656;
        double r58658 = atan(r58657);
        double r58659 = atan(r58655);
        double r58660 = r58658 - r58659;
        return r58660;
}


double f_of(float N) {
        float r58661 = 1.0f;
        float r58662 = 0.0f;
        float r58663 = r58661 + r58662;
        float r58664 = N;
        float r58665 = r58664 * r58664;
        float r58666 = r58665 + r58664;
        float r58667 = r58666 + r58661;
        float r58668 = atan2(r58663, r58667);
        return r58668;
}

double f_od(double N) {
        double r58669 = 1.0;
        double r58670 = 0.0;
        double r58671 = r58669 + r58670;
        double r58672 = N;
        double r58673 = r58672 * r58672;
        double r58674 = r58673 + r58672;
        double r58675 = r58674 + r58669;
        double r58676 = atan2(r58671, r58675);
        return r58676;
}

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 r58677, r58678, r58679, r58680, r58681, r58682;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r58677);
        mpfr_init_set_str(r58678, "1", 10, MPFR_RNDN);
        mpfr_init(r58679);
        mpfr_init(r58680);
        mpfr_init(r58681);
        mpfr_init(r58682);
}

double f_im(double N) {
        mpfr_set_d(r58677, N, MPFR_RNDN);
        ;
        mpfr_add(r58679, r58677, r58678, MPFR_RNDN);
        mpfr_atan(r58680, r58679, MPFR_RNDN);
        mpfr_atan(r58681, r58677, MPFR_RNDN);
        mpfr_sub(r58682, r58680, r58681, MPFR_RNDN);
        return mpfr_get_d(r58682, MPFR_RNDN);
}

static mpfr_t r58683, r58684, r58685, r58686, r58687, r58688, r58689, r58690;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r58683, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r58684, "0", 10, MPFR_RNDN);
        mpfr_init(r58685);
        mpfr_init(r58686);
        mpfr_init(r58687);
        mpfr_init(r58688);
        mpfr_init(r58689);
        mpfr_init(r58690);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r58685, r58683, r58684, MPFR_RNDN);
        mpfr_set_d(r58686, N, MPFR_RNDN);
        mpfr_sqr(r58687, r58686, MPFR_RNDN);
        mpfr_add(r58688, r58687, r58686, MPFR_RNDN);
        mpfr_add(r58689, r58688, r58683, MPFR_RNDN);
        mpfr_atan2(r58690, r58685, r58689, MPFR_RNDN);
        return mpfr_get_d(r58690, MPFR_RNDN);
}

static mpfr_t r58691, r58692, r58693, r58694, r58695, r58696, r58697, r58698;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r58691, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r58692, "0", 10, MPFR_RNDN);
        mpfr_init(r58693);
        mpfr_init(r58694);
        mpfr_init(r58695);
        mpfr_init(r58696);
        mpfr_init(r58697);
        mpfr_init(r58698);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r58693, r58691, r58692, MPFR_RNDN);
        mpfr_set_d(r58694, N, MPFR_RNDN);
        mpfr_sqr(r58695, r58694, MPFR_RNDN);
        mpfr_add(r58696, r58695, r58694, MPFR_RNDN);
        mpfr_add(r58697, r58696, r58691, MPFR_RNDN);
        mpfr_atan2(r58698, r58693, r58697, MPFR_RNDN);
        return mpfr_get_d(r58698, MPFR_RNDN);
}

