#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 r18079 = x;
        float r18080 = r18079 / r18079;
        float r18081 = 1.0f;
        float r18082 = r18081 / r18079;
        float r18083 = r18079 * r18079;
        float r18084 = sqrt(r18083);
        float r18085 = r18082 * r18084;
        float r18086 = r18080 - r18085;
        return r18086;
}

double f_id(double x) {
        double r18087 = x;
        double r18088 = r18087 / r18087;
        double r18089 = 1.0;
        double r18090 = r18089 / r18087;
        double r18091 = r18087 * r18087;
        double r18092 = sqrt(r18091);
        double r18093 = r18090 * r18092;
        double r18094 = r18088 - r18093;
        return r18094;
}


double f_of(float x) {
        float r18095 = 1.0f;
        float r18096 = x;
        float r18097 = fabs(r18096);
        float r18098 = r18097 / r18096;
        float r18099 = r18095 - r18098;
        return r18099;
}

double f_od(double x) {
        double r18100 = 1.0;
        double r18101 = x;
        double r18102 = fabs(r18101);
        double r18103 = r18102 / r18101;
        double r18104 = r18100 - r18103;
        return r18104;
}

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 r18105, r18106, r18107, r18108, r18109, r18110, r18111, r18112;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18105);
        mpfr_init(r18106);
        mpfr_init_set_str(r18107, "1", 10, MPFR_RNDN);
        mpfr_init(r18108);
        mpfr_init(r18109);
        mpfr_init(r18110);
        mpfr_init(r18111);
        mpfr_init(r18112);
}

double f_im(double x) {
        mpfr_set_d(r18105, x, MPFR_RNDN);
        mpfr_div(r18106, r18105, r18105, MPFR_RNDN);
        ;
        mpfr_div(r18108, r18107, r18105, MPFR_RNDN);
        mpfr_mul(r18109, r18105, r18105, MPFR_RNDN);
        mpfr_sqrt(r18110, r18109, MPFR_RNDN);
        mpfr_mul(r18111, r18108, r18110, MPFR_RNDN);
        mpfr_sub(r18112, r18106, r18111, MPFR_RNDN);
        return mpfr_get_d(r18112, MPFR_RNDN);
}

static mpfr_t r18113, r18114, r18115, r18116, r18117;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18113, "1", 10, MPFR_RNDN);
        mpfr_init(r18114);
        mpfr_init(r18115);
        mpfr_init(r18116);
        mpfr_init(r18117);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18114, x, MPFR_RNDN);
        mpfr_abs(r18115, r18114, MPFR_RNDN);
        mpfr_div(r18116, r18115, r18114, MPFR_RNDN);
        mpfr_sub(r18117, r18113, r18116, MPFR_RNDN);
        return mpfr_get_d(r18117, MPFR_RNDN);
}

static mpfr_t r18118, r18119, r18120, r18121, r18122;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18118, "1", 10, MPFR_RNDN);
        mpfr_init(r18119);
        mpfr_init(r18120);
        mpfr_init(r18121);
        mpfr_init(r18122);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18119, x, MPFR_RNDN);
        mpfr_abs(r18120, r18119, MPFR_RNDN);
        mpfr_div(r18121, r18120, r18119, MPFR_RNDN);
        mpfr_sub(r18122, r18118, r18121, MPFR_RNDN);
        return mpfr_get_d(r18122, MPFR_RNDN);
}

