#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 r18056 = x;
        float r18057 = r18056 / r18056;
        float r18058 = 1.0f;
        float r18059 = r18058 / r18056;
        float r18060 = r18056 * r18056;
        float r18061 = sqrt(r18060);
        float r18062 = r18059 * r18061;
        float r18063 = r18057 - r18062;
        return r18063;
}

double f_id(double x) {
        double r18064 = x;
        double r18065 = r18064 / r18064;
        double r18066 = 1.0;
        double r18067 = r18066 / r18064;
        double r18068 = r18064 * r18064;
        double r18069 = sqrt(r18068);
        double r18070 = r18067 * r18069;
        double r18071 = r18065 - r18070;
        return r18071;
}


double f_of(float x) {
        float r18072 = 1.0f;
        float r18073 = x;
        float r18074 = fabs(r18073);
        float r18075 = r18074 / r18073;
        float r18076 = r18072 - r18075;
        return r18076;
}

double f_od(double x) {
        double r18077 = 1.0;
        double r18078 = x;
        double r18079 = fabs(r18078);
        double r18080 = r18079 / r18078;
        double r18081 = r18077 - r18080;
        return r18081;
}

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 r18082, r18083, r18084, r18085, r18086, r18087, r18088, r18089;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18082);
        mpfr_init(r18083);
        mpfr_init_set_str(r18084, "1", 10, MPFR_RNDN);
        mpfr_init(r18085);
        mpfr_init(r18086);
        mpfr_init(r18087);
        mpfr_init(r18088);
        mpfr_init(r18089);
}

double f_im(double x) {
        mpfr_set_d(r18082, x, MPFR_RNDN);
        mpfr_div(r18083, r18082, r18082, MPFR_RNDN);
        ;
        mpfr_div(r18085, r18084, r18082, MPFR_RNDN);
        mpfr_mul(r18086, r18082, r18082, MPFR_RNDN);
        mpfr_sqrt(r18087, r18086, MPFR_RNDN);
        mpfr_mul(r18088, r18085, r18087, MPFR_RNDN);
        mpfr_sub(r18089, r18083, r18088, MPFR_RNDN);
        return mpfr_get_d(r18089, MPFR_RNDN);
}

static mpfr_t r18090, r18091, r18092, r18093, r18094;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18090, "1", 10, MPFR_RNDN);
        mpfr_init(r18091);
        mpfr_init(r18092);
        mpfr_init(r18093);
        mpfr_init(r18094);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18091, x, MPFR_RNDN);
        mpfr_abs(r18092, r18091, MPFR_RNDN);
        mpfr_div(r18093, r18092, r18091, MPFR_RNDN);
        mpfr_sub(r18094, r18090, r18093, MPFR_RNDN);
        return mpfr_get_d(r18094, MPFR_RNDN);
}

static mpfr_t r18095, r18096, r18097, r18098, r18099;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18095, "1", 10, MPFR_RNDN);
        mpfr_init(r18096);
        mpfr_init(r18097);
        mpfr_init(r18098);
        mpfr_init(r18099);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18096, x, MPFR_RNDN);
        mpfr_abs(r18097, r18096, MPFR_RNDN);
        mpfr_div(r18098, r18097, r18096, MPFR_RNDN);
        mpfr_sub(r18099, r18095, r18098, MPFR_RNDN);
        return mpfr_get_d(r18099, MPFR_RNDN);
}

