#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 r37620 = x;
        float r37621 = r37620 / r37620;
        float r37622 = 1;
        float r37623 = r37622 / r37620;
        float r37624 = r37620 * r37620;
        float r37625 = sqrt(r37624);
        float r37626 = r37623 * r37625;
        float r37627 = r37621 - r37626;
        return r37627;
}

double f_id(double x) {
        double r37628 = x;
        double r37629 = r37628 / r37628;
        double r37630 = 1;
        double r37631 = r37630 / r37628;
        double r37632 = r37628 * r37628;
        double r37633 = sqrt(r37632);
        double r37634 = r37631 * r37633;
        double r37635 = r37629 - r37634;
        return r37635;
}


double f_of(float x) {
        float r37636 = 1;
        float r37637 = x;
        float r37638 = fabs(r37637);
        float r37639 = r37638 / r37637;
        float r37640 = r37636 - r37639;
        return r37640;
}

double f_od(double x) {
        double r37641 = 1;
        double r37642 = x;
        double r37643 = fabs(r37642);
        double r37644 = r37643 / r37642;
        double r37645 = r37641 - r37644;
        return r37645;
}

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 r37646, r37647, r37648, r37649, r37650, r37651, r37652, r37653;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37646);
        mpfr_init(r37647);
        mpfr_init_set_str(r37648, "1", 10, MPFR_RNDN);
        mpfr_init(r37649);
        mpfr_init(r37650);
        mpfr_init(r37651);
        mpfr_init(r37652);
        mpfr_init(r37653);
}

double f_im(double x) {
        mpfr_set_d(r37646, x, MPFR_RNDN);
        mpfr_div(r37647, r37646, r37646, MPFR_RNDN);
        ;
        mpfr_div(r37649, r37648, r37646, MPFR_RNDN);
        mpfr_mul(r37650, r37646, r37646, MPFR_RNDN);
        mpfr_sqrt(r37651, r37650, MPFR_RNDN);
        mpfr_mul(r37652, r37649, r37651, MPFR_RNDN);
        mpfr_sub(r37653, r37647, r37652, MPFR_RNDN);
        return mpfr_get_d(r37653, MPFR_RNDN);
}

static mpfr_t r37654, r37655, r37656, r37657, r37658;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37654, "1", 10, MPFR_RNDN);
        mpfr_init(r37655);
        mpfr_init(r37656);
        mpfr_init(r37657);
        mpfr_init(r37658);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r37655, x, MPFR_RNDN);
        mpfr_abs(r37656, r37655, MPFR_RNDN);
        mpfr_div(r37657, r37656, r37655, MPFR_RNDN);
        mpfr_sub(r37658, r37654, r37657, MPFR_RNDN);
        return mpfr_get_d(r37658, MPFR_RNDN);
}

static mpfr_t r37659, r37660, r37661, r37662, r37663;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37659, "1", 10, MPFR_RNDN);
        mpfr_init(r37660);
        mpfr_init(r37661);
        mpfr_init(r37662);
        mpfr_init(r37663);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r37660, x, MPFR_RNDN);
        mpfr_abs(r37661, r37660, MPFR_RNDN);
        mpfr_div(r37662, r37661, r37660, MPFR_RNDN);
        mpfr_sub(r37663, r37659, r37662, MPFR_RNDN);
        return mpfr_get_d(r37663, MPFR_RNDN);
}

