#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 r33584 = x;
        float r33585 = r33584 / r33584;
        float r33586 = 1.0f;
        float r33587 = r33586 / r33584;
        float r33588 = r33584 * r33584;
        float r33589 = sqrt(r33588);
        float r33590 = r33587 * r33589;
        float r33591 = r33585 - r33590;
        return r33591;
}

double f_id(double x) {
        double r33592 = x;
        double r33593 = r33592 / r33592;
        double r33594 = 1.0;
        double r33595 = r33594 / r33592;
        double r33596 = r33592 * r33592;
        double r33597 = sqrt(r33596);
        double r33598 = r33595 * r33597;
        double r33599 = r33593 - r33598;
        return r33599;
}


double f_of(float x) {
        float r33600 = 1.0f;
        float r33601 = x;
        float r33602 = fabs(r33601);
        float r33603 = r33602 / r33601;
        float r33604 = r33600 - r33603;
        return r33604;
}

double f_od(double x) {
        double r33605 = 1.0;
        double r33606 = x;
        double r33607 = fabs(r33606);
        double r33608 = r33607 / r33606;
        double r33609 = r33605 - r33608;
        return r33609;
}

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 r33610, r33611, r33612, r33613, r33614, r33615, r33616, r33617;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r33610);
        mpfr_init(r33611);
        mpfr_init_set_str(r33612, "1", 10, MPFR_RNDN);
        mpfr_init(r33613);
        mpfr_init(r33614);
        mpfr_init(r33615);
        mpfr_init(r33616);
        mpfr_init(r33617);
}

double f_im(double x) {
        mpfr_set_d(r33610, x, MPFR_RNDN);
        mpfr_div(r33611, r33610, r33610, MPFR_RNDN);
        ;
        mpfr_div(r33613, r33612, r33610, MPFR_RNDN);
        mpfr_mul(r33614, r33610, r33610, MPFR_RNDN);
        mpfr_sqrt(r33615, r33614, MPFR_RNDN);
        mpfr_mul(r33616, r33613, r33615, MPFR_RNDN);
        mpfr_sub(r33617, r33611, r33616, MPFR_RNDN);
        return mpfr_get_d(r33617, MPFR_RNDN);
}

static mpfr_t r33618, r33619, r33620, r33621, r33622;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r33618, "1", 10, MPFR_RNDN);
        mpfr_init(r33619);
        mpfr_init(r33620);
        mpfr_init(r33621);
        mpfr_init(r33622);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r33619, x, MPFR_RNDN);
        mpfr_abs(r33620, r33619, MPFR_RNDN);
        mpfr_div(r33621, r33620, r33619, MPFR_RNDN);
        mpfr_sub(r33622, r33618, r33621, MPFR_RNDN);
        return mpfr_get_d(r33622, MPFR_RNDN);
}

static mpfr_t r33623, r33624, r33625, r33626, r33627;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r33623, "1", 10, MPFR_RNDN);
        mpfr_init(r33624);
        mpfr_init(r33625);
        mpfr_init(r33626);
        mpfr_init(r33627);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r33624, x, MPFR_RNDN);
        mpfr_abs(r33625, r33624, MPFR_RNDN);
        mpfr_div(r33626, r33625, r33624, MPFR_RNDN);
        mpfr_sub(r33627, r33623, r33626, MPFR_RNDN);
        return mpfr_get_d(r33627, MPFR_RNDN);
}

