#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 r38012 = x;
        float r38013 = r38012 / r38012;
        float r38014 = 1;
        float r38015 = r38014 / r38012;
        float r38016 = r38012 * r38012;
        float r38017 = sqrt(r38016);
        float r38018 = r38015 * r38017;
        float r38019 = r38013 - r38018;
        return r38019;
}

double f_id(double x) {
        double r38020 = x;
        double r38021 = r38020 / r38020;
        double r38022 = 1;
        double r38023 = r38022 / r38020;
        double r38024 = r38020 * r38020;
        double r38025 = sqrt(r38024);
        double r38026 = r38023 * r38025;
        double r38027 = r38021 - r38026;
        return r38027;
}


double f_of(float x) {
        float r38028 = 1;
        float r38029 = x;
        float r38030 = fabs(r38029);
        float r38031 = r38030 / r38029;
        float r38032 = r38028 - r38031;
        return r38032;
}

double f_od(double x) {
        double r38033 = 1;
        double r38034 = x;
        double r38035 = fabs(r38034);
        double r38036 = r38035 / r38034;
        double r38037 = r38033 - r38036;
        return r38037;
}

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 r38038, r38039, r38040, r38041, r38042, r38043, r38044, r38045;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r38038);
        mpfr_init(r38039);
        mpfr_init_set_str(r38040, "1", 10, MPFR_RNDN);
        mpfr_init(r38041);
        mpfr_init(r38042);
        mpfr_init(r38043);
        mpfr_init(r38044);
        mpfr_init(r38045);
}

double f_im(double x) {
        mpfr_set_d(r38038, x, MPFR_RNDN);
        mpfr_div(r38039, r38038, r38038, MPFR_RNDN);
        ;
        mpfr_div(r38041, r38040, r38038, MPFR_RNDN);
        mpfr_mul(r38042, r38038, r38038, MPFR_RNDN);
        mpfr_sqrt(r38043, r38042, MPFR_RNDN);
        mpfr_mul(r38044, r38041, r38043, MPFR_RNDN);
        mpfr_sub(r38045, r38039, r38044, MPFR_RNDN);
        return mpfr_get_d(r38045, MPFR_RNDN);
}

static mpfr_t r38046, r38047, r38048, r38049, r38050;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38046, "1", 10, MPFR_RNDN);
        mpfr_init(r38047);
        mpfr_init(r38048);
        mpfr_init(r38049);
        mpfr_init(r38050);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r38047, x, MPFR_RNDN);
        mpfr_abs(r38048, r38047, MPFR_RNDN);
        mpfr_div(r38049, r38048, r38047, MPFR_RNDN);
        mpfr_sub(r38050, r38046, r38049, MPFR_RNDN);
        return mpfr_get_d(r38050, MPFR_RNDN);
}

static mpfr_t r38051, r38052, r38053, r38054, r38055;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38051, "1", 10, MPFR_RNDN);
        mpfr_init(r38052);
        mpfr_init(r38053);
        mpfr_init(r38054);
        mpfr_init(r38055);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r38052, x, MPFR_RNDN);
        mpfr_abs(r38053, r38052, MPFR_RNDN);
        mpfr_div(r38054, r38053, r38052, MPFR_RNDN);
        mpfr_sub(r38055, r38051, r38054, MPFR_RNDN);
        return mpfr_get_d(r38055, MPFR_RNDN);
}

