#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 r59035 = N;
        float r59036 = 1;
        float r59037 = r59035 + r59036;
        float r59038 = atan(r59037);
        float r59039 = atan(r59035);
        float r59040 = r59038 - r59039;
        return r59040;
}

double f_id(double N) {
        double r59041 = N;
        double r59042 = 1;
        double r59043 = r59041 + r59042;
        double r59044 = atan(r59043);
        double r59045 = atan(r59041);
        double r59046 = r59044 - r59045;
        return r59046;
}


double f_of(float N) {
        float r59047 = 1;
        float r59048 = 0;
        float r59049 = r59047 + r59048;
        float r59050 = N;
        float r59051 = r59050 + r59047;
        float r59052 = r59051 * r59050;
        float r59053 = r59047 + r59052;
        float r59054 = atan2(r59049, r59053);
        return r59054;
}

double f_od(double N) {
        double r59055 = 1;
        double r59056 = 0;
        double r59057 = r59055 + r59056;
        double r59058 = N;
        double r59059 = r59058 + r59055;
        double r59060 = r59059 * r59058;
        double r59061 = r59055 + r59060;
        double r59062 = atan2(r59057, r59061);
        return r59062;
}

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 r59063, r59064, r59065, r59066, r59067, r59068;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r59063);
        mpfr_init_set_str(r59064, "1", 10, MPFR_RNDN);
        mpfr_init(r59065);
        mpfr_init(r59066);
        mpfr_init(r59067);
        mpfr_init(r59068);
}

double f_im(double N) {
        mpfr_set_d(r59063, N, MPFR_RNDN);
        ;
        mpfr_add(r59065, r59063, r59064, MPFR_RNDN);
        mpfr_atan(r59066, r59065, MPFR_RNDN);
        mpfr_atan(r59067, r59063, MPFR_RNDN);
        mpfr_sub(r59068, r59066, r59067, MPFR_RNDN);
        return mpfr_get_d(r59068, MPFR_RNDN);
}

static mpfr_t r59069, r59070, r59071, r59072, r59073, r59074, r59075, r59076;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59069, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59070, "0", 10, MPFR_RNDN);
        mpfr_init(r59071);
        mpfr_init(r59072);
        mpfr_init(r59073);
        mpfr_init(r59074);
        mpfr_init(r59075);
        mpfr_init(r59076);
}

double f_fm(double N) {
        ;
        ;
        mpfr_add(r59071, r59069, r59070, MPFR_RNDN);
        mpfr_set_d(r59072, N, MPFR_RNDN);
        mpfr_add(r59073, r59072, r59069, MPFR_RNDN);
        mpfr_mul(r59074, r59073, r59072, MPFR_RNDN);
        mpfr_add(r59075, r59069, r59074, MPFR_RNDN);
        mpfr_atan2(r59076, r59071, r59075, MPFR_RNDN);
        return mpfr_get_d(r59076, MPFR_RNDN);
}

static mpfr_t r59077, r59078, r59079, r59080, r59081, r59082, r59083, r59084;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r59077, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r59078, "0", 10, MPFR_RNDN);
        mpfr_init(r59079);
        mpfr_init(r59080);
        mpfr_init(r59081);
        mpfr_init(r59082);
        mpfr_init(r59083);
        mpfr_init(r59084);
}

double f_dm(double N) {
        ;
        ;
        mpfr_add(r59079, r59077, r59078, MPFR_RNDN);
        mpfr_set_d(r59080, N, MPFR_RNDN);
        mpfr_add(r59081, r59080, r59077, MPFR_RNDN);
        mpfr_mul(r59082, r59081, r59080, MPFR_RNDN);
        mpfr_add(r59083, r59077, r59082, MPFR_RNDN);
        mpfr_atan2(r59084, r59079, r59083, MPFR_RNDN);
        return mpfr_get_d(r59084, MPFR_RNDN);
}

