#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 r18075 = x;
        float r18076 = r18075 / r18075;
        float r18077 = 1.0f;
        float r18078 = r18077 / r18075;
        float r18079 = r18075 * r18075;
        float r18080 = sqrt(r18079);
        float r18081 = r18078 * r18080;
        float r18082 = r18076 - r18081;
        return r18082;
}

double f_id(double x) {
        double r18083 = x;
        double r18084 = r18083 / r18083;
        double r18085 = 1.0;
        double r18086 = r18085 / r18083;
        double r18087 = r18083 * r18083;
        double r18088 = sqrt(r18087);
        double r18089 = r18086 * r18088;
        double r18090 = r18084 - r18089;
        return r18090;
}


double f_of(float x) {
        float r18091 = 1.0f;
        float r18092 = x;
        float r18093 = fabs(r18092);
        float r18094 = r18093 / r18092;
        float r18095 = r18091 - r18094;
        return r18095;
}

double f_od(double x) {
        double r18096 = 1.0;
        double r18097 = x;
        double r18098 = fabs(r18097);
        double r18099 = r18098 / r18097;
        double r18100 = r18096 - r18099;
        return r18100;
}

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 r18101, r18102, r18103, r18104, r18105, r18106, r18107, r18108;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18101);
        mpfr_init(r18102);
        mpfr_init_set_str(r18103, "1", 10, MPFR_RNDN);
        mpfr_init(r18104);
        mpfr_init(r18105);
        mpfr_init(r18106);
        mpfr_init(r18107);
        mpfr_init(r18108);
}

double f_im(double x) {
        mpfr_set_d(r18101, x, MPFR_RNDN);
        mpfr_div(r18102, r18101, r18101, MPFR_RNDN);
        ;
        mpfr_div(r18104, r18103, r18101, MPFR_RNDN);
        mpfr_mul(r18105, r18101, r18101, MPFR_RNDN);
        mpfr_sqrt(r18106, r18105, MPFR_RNDN);
        mpfr_mul(r18107, r18104, r18106, MPFR_RNDN);
        mpfr_sub(r18108, r18102, r18107, MPFR_RNDN);
        return mpfr_get_d(r18108, MPFR_RNDN);
}

static mpfr_t r18109, r18110, r18111, r18112, r18113;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18109, "1", 10, MPFR_RNDN);
        mpfr_init(r18110);
        mpfr_init(r18111);
        mpfr_init(r18112);
        mpfr_init(r18113);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18110, x, MPFR_RNDN);
        mpfr_abs(r18111, r18110, MPFR_RNDN);
        mpfr_div(r18112, r18111, r18110, MPFR_RNDN);
        mpfr_sub(r18113, r18109, r18112, MPFR_RNDN);
        return mpfr_get_d(r18113, MPFR_RNDN);
}

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

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

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

