#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 r10887 = N;
        float r10888 = 1.0f;
        float r10889 = r10887 + r10888;
        float r10890 = atan(r10889);
        float r10891 = atan(r10887);
        float r10892 = r10890 - r10891;
        return r10892;
}

double f_id(double N) {
        double r10893 = N;
        double r10894 = 1.0;
        double r10895 = r10893 + r10894;
        double r10896 = atan(r10895);
        double r10897 = atan(r10893);
        double r10898 = r10896 - r10897;
        return r10898;
}


double f_of(float N) {
        float r10899 = 1.0f;
        float r10900 = N;
        float r10901 = r10900 + r10899;
        float r10902 = fma(r10900, r10901, r10899);
        float r10903 = atan2(r10899, r10902);
        return r10903;
}

double f_od(double N) {
        double r10904 = 1.0;
        double r10905 = N;
        double r10906 = r10905 + r10904;
        double r10907 = fma(r10905, r10906, r10904);
        double r10908 = atan2(r10904, r10907);
        return r10908;
}

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 r10909, r10910, r10911, r10912, r10913, r10914;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10909);
        mpfr_init_set_str(r10910, "1", 10, MPFR_RNDN);
        mpfr_init(r10911);
        mpfr_init(r10912);
        mpfr_init(r10913);
        mpfr_init(r10914);
}

double f_im(double N) {
        mpfr_set_d(r10909, N, MPFR_RNDN);
        ;
        mpfr_add(r10911, r10909, r10910, MPFR_RNDN);
        mpfr_atan(r10912, r10911, MPFR_RNDN);
        mpfr_atan(r10913, r10909, MPFR_RNDN);
        mpfr_sub(r10914, r10912, r10913, MPFR_RNDN);
        return mpfr_get_d(r10914, MPFR_RNDN);
}

static mpfr_t r10915, r10916, r10917, r10918, r10919;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10915, "1", 10, MPFR_RNDN);
        mpfr_init(r10916);
        mpfr_init(r10917);
        mpfr_init(r10918);
        mpfr_init(r10919);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r10916, N, MPFR_RNDN);
        mpfr_add(r10917, r10916, r10915, MPFR_RNDN);
        mpfr_fma(r10918, r10916, r10917, r10915, MPFR_RNDN);
        mpfr_atan2(r10919, r10915, r10918, MPFR_RNDN);
        return mpfr_get_d(r10919, MPFR_RNDN);
}

static mpfr_t r10920, r10921, r10922, r10923, r10924;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10920, "1", 10, MPFR_RNDN);
        mpfr_init(r10921);
        mpfr_init(r10922);
        mpfr_init(r10923);
        mpfr_init(r10924);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r10921, N, MPFR_RNDN);
        mpfr_add(r10922, r10921, r10920, MPFR_RNDN);
        mpfr_fma(r10923, r10921, r10922, r10920, MPFR_RNDN);
        mpfr_atan2(r10924, r10920, r10923, MPFR_RNDN);
        return mpfr_get_d(r10924, MPFR_RNDN);
}

