#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 r58967 = N;
        float r58968 = 1;
        float r58969 = r58967 + r58968;
        float r58970 = atan(r58969);
        float r58971 = atan(r58967);
        float r58972 = r58970 - r58971;
        return r58972;
}

double f_id(double N) {
        double r58973 = N;
        double r58974 = 1;
        double r58975 = r58973 + r58974;
        double r58976 = atan(r58975);
        double r58977 = atan(r58973);
        double r58978 = r58976 - r58977;
        return r58978;
}


double f_of(float N) {
        float r58979 = 1;
        float r58980 = 0;
        float r58981 = r58979 + r58980;
        float r58982 = N;
        float r58983 = r58982 + r58979;
        float r58984 = r58983 * r58982;
        float r58985 = r58979 + r58984;
        float r58986 = atan2(r58981, r58985);
        return r58986;
}

double f_od(double N) {
        double r58987 = 1;
        double r58988 = 0;
        double r58989 = r58987 + r58988;
        double r58990 = N;
        double r58991 = r58990 + r58987;
        double r58992 = r58991 * r58990;
        double r58993 = r58987 + r58992;
        double r58994 = atan2(r58989, r58993);
        return r58994;
}

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 r58995, r58996, r58997, r58998, r58999, r59000;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r58995);
        mpfr_init_set_str(r58996, "1", 10, MPFR_RNDN);
        mpfr_init(r58997);
        mpfr_init(r58998);
        mpfr_init(r58999);
        mpfr_init(r59000);
}

double f_im(double N) {
        mpfr_set_d(r58995, N, MPFR_RNDN);
        ;
        mpfr_add(r58997, r58995, r58996, MPFR_RNDN);
        mpfr_atan(r58998, r58997, MPFR_RNDN);
        mpfr_atan(r58999, r58995, MPFR_RNDN);
        mpfr_sub(r59000, r58998, r58999, MPFR_RNDN);
        return mpfr_get_d(r59000, MPFR_RNDN);
}

static mpfr_t r59001, r59002, r59003, r59004, r59005, r59006, r59007, r59008;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59001, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59002, "0", 10, MPFR_RNDN);
        mpfr_init(r59003);
        mpfr_init(r59004);
        mpfr_init(r59005);
        mpfr_init(r59006);
        mpfr_init(r59007);
        mpfr_init(r59008);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r59003, r59001, r59002, MPFR_RNDN);
        mpfr_set_d(r59004, N, MPFR_RNDN);
        mpfr_add(r59005, r59004, r59001, MPFR_RNDN);
        mpfr_mul(r59006, r59005, r59004, MPFR_RNDN);
        mpfr_add(r59007, r59001, r59006, MPFR_RNDN);
        mpfr_atan2(r59008, r59003, r59007, MPFR_RNDN);
        return mpfr_get_d(r59008, MPFR_RNDN);
}

static mpfr_t r59009, r59010, r59011, r59012, r59013, r59014, r59015, r59016;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59009, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59010, "0", 10, MPFR_RNDN);
        mpfr_init(r59011);
        mpfr_init(r59012);
        mpfr_init(r59013);
        mpfr_init(r59014);
        mpfr_init(r59015);
        mpfr_init(r59016);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r59011, r59009, r59010, MPFR_RNDN);
        mpfr_set_d(r59012, N, MPFR_RNDN);
        mpfr_add(r59013, r59012, r59009, MPFR_RNDN);
        mpfr_mul(r59014, r59013, r59012, MPFR_RNDN);
        mpfr_add(r59015, r59009, r59014, MPFR_RNDN);
        mpfr_atan2(r59016, r59011, r59015, MPFR_RNDN);
        return mpfr_get_d(r59016, MPFR_RNDN);
}

