#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 r27992 = N;
        float r27993 = 1;
        float r27994 = r27992 + r27993;
        float r27995 = atan(r27994);
        float r27996 = atan(r27992);
        float r27997 = r27995 - r27996;
        return r27997;
}

double f_id(double N) {
        double r27998 = N;
        double r27999 = 1;
        double r28000 = r27998 + r27999;
        double r28001 = atan(r28000);
        double r28002 = atan(r27998);
        double r28003 = r28001 - r28002;
        return r28003;
}


double f_of(float N) {
        float r28004 = 1;
        float r28005 = N;
        float r28006 = r28005 + r28004;
        float r28007 = r28006 * r28005;
        float r28008 = r28004 + r28007;
        float r28009 = atan2(r28004, r28008);
        return r28009;
}

double f_od(double N) {
        double r28010 = 1;
        double r28011 = N;
        double r28012 = r28011 + r28010;
        double r28013 = r28012 * r28011;
        double r28014 = r28010 + r28013;
        double r28015 = atan2(r28010, r28014);
        return r28015;
}

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 r28016, r28017, r28018, r28019, r28020, r28021;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28016);
        mpfr_init_set_str(r28017, "1", 10, MPFR_RNDN);
        mpfr_init(r28018);
        mpfr_init(r28019);
        mpfr_init(r28020);
        mpfr_init(r28021);
}

double f_im(double N) {
        mpfr_set_d(r28016, N, MPFR_RNDN);
        ;
        mpfr_add(r28018, r28016, r28017, MPFR_RNDN);
        mpfr_atan(r28019, r28018, MPFR_RNDN);
        mpfr_atan(r28020, r28016, MPFR_RNDN);
        mpfr_sub(r28021, r28019, r28020, MPFR_RNDN);
        return mpfr_get_d(r28021, MPFR_RNDN);
}

static mpfr_t r28022, r28023, r28024, r28025, r28026, r28027;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28022, "1", 10, MPFR_RNDN);
        mpfr_init(r28023);
        mpfr_init(r28024);
        mpfr_init(r28025);
        mpfr_init(r28026);
        mpfr_init(r28027);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r28023, N, MPFR_RNDN);
        mpfr_add(r28024, r28023, r28022, MPFR_RNDN);
        mpfr_mul(r28025, r28024, r28023, MPFR_RNDN);
        mpfr_add(r28026, r28022, r28025, MPFR_RNDN);
        mpfr_atan2(r28027, r28022, r28026, MPFR_RNDN);
        return mpfr_get_d(r28027, MPFR_RNDN);
}

static mpfr_t r28028, r28029, r28030, r28031, r28032, r28033;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28028, "1", 10, MPFR_RNDN);
        mpfr_init(r28029);
        mpfr_init(r28030);
        mpfr_init(r28031);
        mpfr_init(r28032);
        mpfr_init(r28033);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r28029, N, MPFR_RNDN);
        mpfr_add(r28030, r28029, r28028, MPFR_RNDN);
        mpfr_mul(r28031, r28030, r28029, MPFR_RNDN);
        mpfr_add(r28032, r28028, r28031, MPFR_RNDN);
        mpfr_atan2(r28033, r28028, r28032, MPFR_RNDN);
        return mpfr_get_d(r28033, MPFR_RNDN);
}

