#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 r11008 = x;
        float r11009 = r11008 / r11008;
        float r11010 = 1.0f;
        float r11011 = r11010 / r11008;
        float r11012 = r11008 * r11008;
        float r11013 = sqrt(r11012);
        float r11014 = r11011 * r11013;
        float r11015 = r11009 - r11014;
        return r11015;
}

double f_id(double x) {
        double r11016 = x;
        double r11017 = r11016 / r11016;
        double r11018 = 1.0;
        double r11019 = r11018 / r11016;
        double r11020 = r11016 * r11016;
        double r11021 = sqrt(r11020);
        double r11022 = r11019 * r11021;
        double r11023 = r11017 - r11022;
        return r11023;
}


double f_of(float x) {
        float r11024 = 1.0f;
        float r11025 = x;
        float r11026 = fabs(r11025);
        float r11027 = r11026 / r11025;
        float r11028 = r11024 - r11027;
        return r11028;
}

double f_od(double x) {
        double r11029 = 1.0;
        double r11030 = x;
        double r11031 = fabs(r11030);
        double r11032 = r11031 / r11030;
        double r11033 = r11029 - r11032;
        return r11033;
}

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 r11034, r11035, r11036, r11037, r11038, r11039, r11040, r11041;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11034);
        mpfr_init(r11035);
        mpfr_init_set_str(r11036, "1", 10, MPFR_RNDN);
        mpfr_init(r11037);
        mpfr_init(r11038);
        mpfr_init(r11039);
        mpfr_init(r11040);
        mpfr_init(r11041);
}

double f_im(double x) {
        mpfr_set_d(r11034, x, MPFR_RNDN);
        mpfr_div(r11035, r11034, r11034, MPFR_RNDN);
        ;
        mpfr_div(r11037, r11036, r11034, MPFR_RNDN);
        mpfr_mul(r11038, r11034, r11034, MPFR_RNDN);
        mpfr_sqrt(r11039, r11038, MPFR_RNDN);
        mpfr_mul(r11040, r11037, r11039, MPFR_RNDN);
        mpfr_sub(r11041, r11035, r11040, MPFR_RNDN);
        return mpfr_get_d(r11041, MPFR_RNDN);
}

static mpfr_t r11042, r11043, r11044, r11045, r11046;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11042, "1", 10, MPFR_RNDN);
        mpfr_init(r11043);
        mpfr_init(r11044);
        mpfr_init(r11045);
        mpfr_init(r11046);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11043, x, MPFR_RNDN);
        mpfr_abs(r11044, r11043, MPFR_RNDN);
        mpfr_div(r11045, r11044, r11043, MPFR_RNDN);
        mpfr_sub(r11046, r11042, r11045, MPFR_RNDN);
        return mpfr_get_d(r11046, MPFR_RNDN);
}

static mpfr_t r11047, r11048, r11049, r11050, r11051;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11047, "1", 10, MPFR_RNDN);
        mpfr_init(r11048);
        mpfr_init(r11049);
        mpfr_init(r11050);
        mpfr_init(r11051);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11048, x, MPFR_RNDN);
        mpfr_abs(r11049, r11048, MPFR_RNDN);
        mpfr_div(r11050, r11049, r11048, MPFR_RNDN);
        mpfr_sub(r11051, r11047, r11050, MPFR_RNDN);
        return mpfr_get_d(r11051, MPFR_RNDN);
}

