#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 r27838 = N;
        float r27839 = 1;
        float r27840 = r27838 + r27839;
        float r27841 = atan(r27840);
        float r27842 = atan(r27838);
        float r27843 = r27841 - r27842;
        return r27843;
}

double f_id(double N) {
        double r27844 = N;
        double r27845 = 1;
        double r27846 = r27844 + r27845;
        double r27847 = atan(r27846);
        double r27848 = atan(r27844);
        double r27849 = r27847 - r27848;
        return r27849;
}


double f_of(float N) {
        float r27850 = 1;
        float r27851 = N;
        float r27852 = r27851 + r27850;
        float r27853 = fma(r27852, r27851, r27850);
        float r27854 = atan2(r27850, r27853);
        return r27854;
}

double f_od(double N) {
        double r27855 = 1;
        double r27856 = N;
        double r27857 = r27856 + r27855;
        double r27858 = fma(r27857, r27856, r27855);
        double r27859 = atan2(r27855, r27858);
        return r27859;
}

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 r27860, r27861, r27862, r27863, r27864, r27865;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27860);
        mpfr_init_set_str(r27861, "1", 10, MPFR_RNDN);
        mpfr_init(r27862);
        mpfr_init(r27863);
        mpfr_init(r27864);
        mpfr_init(r27865);
}

double f_im(double N) {
        mpfr_set_d(r27860, N, MPFR_RNDN);
        ;
        mpfr_add(r27862, r27860, r27861, MPFR_RNDN);
        mpfr_atan(r27863, r27862, MPFR_RNDN);
        mpfr_atan(r27864, r27860, MPFR_RNDN);
        mpfr_sub(r27865, r27863, r27864, MPFR_RNDN);
        return mpfr_get_d(r27865, MPFR_RNDN);
}

static mpfr_t r27866, r27867, r27868, r27869, r27870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27866, "1", 10, MPFR_RNDN);
        mpfr_init(r27867);
        mpfr_init(r27868);
        mpfr_init(r27869);
        mpfr_init(r27870);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r27867, N, MPFR_RNDN);
        mpfr_add(r27868, r27867, r27866, MPFR_RNDN);
        mpfr_fma(r27869, r27868, r27867, r27866, MPFR_RNDN);
        mpfr_atan2(r27870, r27866, r27869, MPFR_RNDN);
        return mpfr_get_d(r27870, MPFR_RNDN);
}

static mpfr_t r27871, r27872, r27873, r27874, r27875;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27871, "1", 10, MPFR_RNDN);
        mpfr_init(r27872);
        mpfr_init(r27873);
        mpfr_init(r27874);
        mpfr_init(r27875);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r27872, N, MPFR_RNDN);
        mpfr_add(r27873, r27872, r27871, MPFR_RNDN);
        mpfr_fma(r27874, r27873, r27872, r27871, MPFR_RNDN);
        mpfr_atan2(r27875, r27871, r27874, MPFR_RNDN);
        return mpfr_get_d(r27875, MPFR_RNDN);
}

