#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 r37732 = x;
        float r37733 = r37732 / r37732;
        float r37734 = 1;
        float r37735 = r37734 / r37732;
        float r37736 = r37732 * r37732;
        float r37737 = sqrt(r37736);
        float r37738 = r37735 * r37737;
        float r37739 = r37733 - r37738;
        return r37739;
}

double f_id(double x) {
        double r37740 = x;
        double r37741 = r37740 / r37740;
        double r37742 = 1;
        double r37743 = r37742 / r37740;
        double r37744 = r37740 * r37740;
        double r37745 = sqrt(r37744);
        double r37746 = r37743 * r37745;
        double r37747 = r37741 - r37746;
        return r37747;
}


double f_of(float x) {
        float r37748 = 1;
        float r37749 = x;
        float r37750 = fabs(r37749);
        float r37751 = r37750 / r37749;
        float r37752 = r37748 - r37751;
        return r37752;
}

double f_od(double x) {
        double r37753 = 1;
        double r37754 = x;
        double r37755 = fabs(r37754);
        double r37756 = r37755 / r37754;
        double r37757 = r37753 - r37756;
        return r37757;
}

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 r37758, r37759, r37760, r37761, r37762, r37763, r37764, r37765;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37758);
        mpfr_init(r37759);
        mpfr_init_set_str(r37760, "1", 10, MPFR_RNDN);
        mpfr_init(r37761);
        mpfr_init(r37762);
        mpfr_init(r37763);
        mpfr_init(r37764);
        mpfr_init(r37765);
}

double f_im(double x) {
        mpfr_set_d(r37758, x, MPFR_RNDN);
        mpfr_div(r37759, r37758, r37758, MPFR_RNDN);
        ;
        mpfr_div(r37761, r37760, r37758, MPFR_RNDN);
        mpfr_mul(r37762, r37758, r37758, MPFR_RNDN);
        mpfr_sqrt(r37763, r37762, MPFR_RNDN);
        mpfr_mul(r37764, r37761, r37763, MPFR_RNDN);
        mpfr_sub(r37765, r37759, r37764, MPFR_RNDN);
        return mpfr_get_d(r37765, MPFR_RNDN);
}

static mpfr_t r37766, r37767, r37768, r37769, r37770;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37766, "1", 10, MPFR_RNDN);
        mpfr_init(r37767);
        mpfr_init(r37768);
        mpfr_init(r37769);
        mpfr_init(r37770);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r37767, x, MPFR_RNDN);
        mpfr_abs(r37768, r37767, MPFR_RNDN);
        mpfr_div(r37769, r37768, r37767, MPFR_RNDN);
        mpfr_sub(r37770, r37766, r37769, MPFR_RNDN);
        return mpfr_get_d(r37770, MPFR_RNDN);
}

static mpfr_t r37771, r37772, r37773, r37774, r37775;

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

double f_dm(double x) {
        ;
        mpfr_set_d(r37772, x, MPFR_RNDN);
        mpfr_abs(r37773, r37772, MPFR_RNDN);
        mpfr_div(r37774, r37773, r37772, MPFR_RNDN);
        mpfr_sub(r37775, r37771, r37774, MPFR_RNDN);
        return mpfr_get_d(r37775, MPFR_RNDN);
}

