#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 r18183 = x;
        float r18184 = r18183 / r18183;
        float r18185 = 1.0f;
        float r18186 = r18185 / r18183;
        float r18187 = r18183 * r18183;
        float r18188 = sqrt(r18187);
        float r18189 = r18186 * r18188;
        float r18190 = r18184 - r18189;
        return r18190;
}

double f_id(double x) {
        double r18191 = x;
        double r18192 = r18191 / r18191;
        double r18193 = 1.0;
        double r18194 = r18193 / r18191;
        double r18195 = r18191 * r18191;
        double r18196 = sqrt(r18195);
        double r18197 = r18194 * r18196;
        double r18198 = r18192 - r18197;
        return r18198;
}


double f_of(float x) {
        float r18199 = 1.0f;
        float r18200 = x;
        float r18201 = fabs(r18200);
        float r18202 = r18201 / r18200;
        float r18203 = r18199 - r18202;
        return r18203;
}

double f_od(double x) {
        double r18204 = 1.0;
        double r18205 = x;
        double r18206 = fabs(r18205);
        double r18207 = r18206 / r18205;
        double r18208 = r18204 - r18207;
        return r18208;
}

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 r18209, r18210, r18211, r18212, r18213, r18214, r18215, r18216;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18209);
        mpfr_init(r18210);
        mpfr_init_set_str(r18211, "1", 10, MPFR_RNDN);
        mpfr_init(r18212);
        mpfr_init(r18213);
        mpfr_init(r18214);
        mpfr_init(r18215);
        mpfr_init(r18216);
}

double f_im(double x) {
        mpfr_set_d(r18209, x, MPFR_RNDN);
        mpfr_div(r18210, r18209, r18209, MPFR_RNDN);
        ;
        mpfr_div(r18212, r18211, r18209, MPFR_RNDN);
        mpfr_mul(r18213, r18209, r18209, MPFR_RNDN);
        mpfr_sqrt(r18214, r18213, MPFR_RNDN);
        mpfr_mul(r18215, r18212, r18214, MPFR_RNDN);
        mpfr_sub(r18216, r18210, r18215, MPFR_RNDN);
        return mpfr_get_d(r18216, MPFR_RNDN);
}

static mpfr_t r18217, r18218, r18219, r18220, r18221;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18217, "1", 10, MPFR_RNDN);
        mpfr_init(r18218);
        mpfr_init(r18219);
        mpfr_init(r18220);
        mpfr_init(r18221);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18218, x, MPFR_RNDN);
        mpfr_abs(r18219, r18218, MPFR_RNDN);
        mpfr_div(r18220, r18219, r18218, MPFR_RNDN);
        mpfr_sub(r18221, r18217, r18220, MPFR_RNDN);
        return mpfr_get_d(r18221, MPFR_RNDN);
}

static mpfr_t r18222, r18223, r18224, r18225, r18226;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18222, "1", 10, MPFR_RNDN);
        mpfr_init(r18223);
        mpfr_init(r18224);
        mpfr_init(r18225);
        mpfr_init(r18226);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18223, x, MPFR_RNDN);
        mpfr_abs(r18224, r18223, MPFR_RNDN);
        mpfr_div(r18225, r18224, r18223, MPFR_RNDN);
        mpfr_sub(r18226, r18222, r18225, MPFR_RNDN);
        return mpfr_get_d(r18226, MPFR_RNDN);
}

