#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 r11216 = x;
        float r11217 = r11216 / r11216;
        float r11218 = 1.0f;
        float r11219 = r11218 / r11216;
        float r11220 = r11216 * r11216;
        float r11221 = sqrt(r11220);
        float r11222 = r11219 * r11221;
        float r11223 = r11217 - r11222;
        return r11223;
}

double f_id(double x) {
        double r11224 = x;
        double r11225 = r11224 / r11224;
        double r11226 = 1.0;
        double r11227 = r11226 / r11224;
        double r11228 = r11224 * r11224;
        double r11229 = sqrt(r11228);
        double r11230 = r11227 * r11229;
        double r11231 = r11225 - r11230;
        return r11231;
}


double f_of(float x) {
        float r11232 = 1.0f;
        float r11233 = x;
        float r11234 = fabs(r11233);
        float r11235 = r11234 / r11233;
        float r11236 = r11232 - r11235;
        return r11236;
}

double f_od(double x) {
        double r11237 = 1.0;
        double r11238 = x;
        double r11239 = fabs(r11238);
        double r11240 = r11239 / r11238;
        double r11241 = r11237 - r11240;
        return r11241;
}

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 r11242, r11243, r11244, r11245, r11246, r11247, r11248, r11249;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11242);
        mpfr_init(r11243);
        mpfr_init_set_str(r11244, "1", 10, MPFR_RNDN);
        mpfr_init(r11245);
        mpfr_init(r11246);
        mpfr_init(r11247);
        mpfr_init(r11248);
        mpfr_init(r11249);
}

double f_im(double x) {
        mpfr_set_d(r11242, x, MPFR_RNDN);
        mpfr_div(r11243, r11242, r11242, MPFR_RNDN);
        ;
        mpfr_div(r11245, r11244, r11242, MPFR_RNDN);
        mpfr_mul(r11246, r11242, r11242, MPFR_RNDN);
        mpfr_sqrt(r11247, r11246, MPFR_RNDN);
        mpfr_mul(r11248, r11245, r11247, MPFR_RNDN);
        mpfr_sub(r11249, r11243, r11248, MPFR_RNDN);
        return mpfr_get_d(r11249, MPFR_RNDN);
}

static mpfr_t r11250, r11251, r11252, r11253, r11254;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11250, "1", 10, MPFR_RNDN);
        mpfr_init(r11251);
        mpfr_init(r11252);
        mpfr_init(r11253);
        mpfr_init(r11254);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11251, x, MPFR_RNDN);
        mpfr_abs(r11252, r11251, MPFR_RNDN);
        mpfr_div(r11253, r11252, r11251, MPFR_RNDN);
        mpfr_sub(r11254, r11250, r11253, MPFR_RNDN);
        return mpfr_get_d(r11254, MPFR_RNDN);
}

static mpfr_t r11255, r11256, r11257, r11258, r11259;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11255, "1", 10, MPFR_RNDN);
        mpfr_init(r11256);
        mpfr_init(r11257);
        mpfr_init(r11258);
        mpfr_init(r11259);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11256, x, MPFR_RNDN);
        mpfr_abs(r11257, r11256, MPFR_RNDN);
        mpfr_div(r11258, r11257, r11256, MPFR_RNDN);
        mpfr_sub(r11259, r11255, r11258, MPFR_RNDN);
        return mpfr_get_d(r11259, MPFR_RNDN);
}

