#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "sqrt sqr";

double f_if(float x) {
        float r37743 = x;
        float r37744 = r37743 / r37743;
        float r37745 = 1;
        float r37746 = r37745 / r37743;
        float r37747 = r37743 * r37743;
        float r37748 = sqrt(r37747);
        float r37749 = r37746 * r37748;
        float r37750 = r37744 - r37749;
        return r37750;
}

double f_id(double x) {
        double r37751 = x;
        double r37752 = r37751 / r37751;
        double r37753 = 1;
        double r37754 = r37753 / r37751;
        double r37755 = r37751 * r37751;
        double r37756 = sqrt(r37755);
        double r37757 = r37754 * r37756;
        double r37758 = r37752 - r37757;
        return r37758;
}


double f_of(float x) {
        float r37759 = 1;
        float r37760 = x;
        float r37761 = fabs(r37760);
        float r37762 = r37761 / r37760;
        float r37763 = r37759 - r37762;
        return r37763;
}

double f_od(double x) {
        double r37764 = 1;
        double r37765 = x;
        double r37766 = fabs(r37765);
        double r37767 = r37766 / r37765;
        double r37768 = r37764 - r37767;
        return r37768;
}

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 r37769, r37770, r37771, r37772, r37773, r37774, r37775, r37776;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37769);
        mpfr_init(r37770);
        mpfr_init_set_str(r37771, "1", 10, MPFR_RNDN);
        mpfr_init(r37772);
        mpfr_init(r37773);
        mpfr_init(r37774);
        mpfr_init(r37775);
        mpfr_init(r37776);
}

double f_im(double x) {
        mpfr_set_d(r37769, x, MPFR_RNDN);
        mpfr_div(r37770, r37769, r37769, MPFR_RNDN);
        ;
        mpfr_div(r37772, r37771, r37769, MPFR_RNDN);
        mpfr_mul(r37773, r37769, r37769, MPFR_RNDN);
        mpfr_sqrt(r37774, r37773, MPFR_RNDN);
        mpfr_mul(r37775, r37772, r37774, MPFR_RNDN);
        mpfr_sub(r37776, r37770, r37775, MPFR_RNDN);
        return mpfr_get_d(r37776, MPFR_RNDN);
}

static mpfr_t r37777, r37778, r37779, r37780, r37781;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37777, "1", 10, MPFR_RNDN);
        mpfr_init(r37778);
        mpfr_init(r37779);
        mpfr_init(r37780);
        mpfr_init(r37781);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r37778, x, MPFR_RNDN);
        mpfr_abs(r37779, r37778, MPFR_RNDN);
        mpfr_div(r37780, r37779, r37778, MPFR_RNDN);
        mpfr_sub(r37781, r37777, r37780, MPFR_RNDN);
        return mpfr_get_d(r37781, MPFR_RNDN);
}

static mpfr_t r37782, r37783, r37784, r37785, r37786;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37782, "1", 10, MPFR_RNDN);
        mpfr_init(r37783);
        mpfr_init(r37784);
        mpfr_init(r37785);
        mpfr_init(r37786);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r37783, x, MPFR_RNDN);
        mpfr_abs(r37784, r37783, MPFR_RNDN);
        mpfr_div(r37785, r37784, r37783, MPFR_RNDN);
        mpfr_sub(r37786, r37782, r37785, MPFR_RNDN);
        return mpfr_get_d(r37786, MPFR_RNDN);
}

