#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 r18460 = x;
        float r18461 = r18460 / r18460;
        float r18462 = 1.0f;
        float r18463 = r18462 / r18460;
        float r18464 = r18460 * r18460;
        float r18465 = sqrt(r18464);
        float r18466 = r18463 * r18465;
        float r18467 = r18461 - r18466;
        return r18467;
}

double f_id(double x) {
        double r18468 = x;
        double r18469 = r18468 / r18468;
        double r18470 = 1.0;
        double r18471 = r18470 / r18468;
        double r18472 = r18468 * r18468;
        double r18473 = sqrt(r18472);
        double r18474 = r18471 * r18473;
        double r18475 = r18469 - r18474;
        return r18475;
}


double f_of(float x) {
        float r18476 = 1.0f;
        float r18477 = x;
        float r18478 = fabs(r18477);
        float r18479 = r18478 / r18477;
        float r18480 = r18476 - r18479;
        return r18480;
}

double f_od(double x) {
        double r18481 = 1.0;
        double r18482 = x;
        double r18483 = fabs(r18482);
        double r18484 = r18483 / r18482;
        double r18485 = r18481 - r18484;
        return r18485;
}

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 r18486, r18487, r18488, r18489, r18490, r18491, r18492, r18493;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18486);
        mpfr_init(r18487);
        mpfr_init_set_str(r18488, "1", 10, MPFR_RNDN);
        mpfr_init(r18489);
        mpfr_init(r18490);
        mpfr_init(r18491);
        mpfr_init(r18492);
        mpfr_init(r18493);
}

double f_im(double x) {
        mpfr_set_d(r18486, x, MPFR_RNDN);
        mpfr_div(r18487, r18486, r18486, MPFR_RNDN);
        ;
        mpfr_div(r18489, r18488, r18486, MPFR_RNDN);
        mpfr_mul(r18490, r18486, r18486, MPFR_RNDN);
        mpfr_sqrt(r18491, r18490, MPFR_RNDN);
        mpfr_mul(r18492, r18489, r18491, MPFR_RNDN);
        mpfr_sub(r18493, r18487, r18492, MPFR_RNDN);
        return mpfr_get_d(r18493, MPFR_RNDN);
}

static mpfr_t r18494, r18495, r18496, r18497, r18498;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18494, "1", 10, MPFR_RNDN);
        mpfr_init(r18495);
        mpfr_init(r18496);
        mpfr_init(r18497);
        mpfr_init(r18498);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18495, x, MPFR_RNDN);
        mpfr_abs(r18496, r18495, MPFR_RNDN);
        mpfr_div(r18497, r18496, r18495, MPFR_RNDN);
        mpfr_sub(r18498, r18494, r18497, MPFR_RNDN);
        return mpfr_get_d(r18498, MPFR_RNDN);
}

static mpfr_t r18499, r18500, r18501, r18502, r18503;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18499, "1", 10, MPFR_RNDN);
        mpfr_init(r18500);
        mpfr_init(r18501);
        mpfr_init(r18502);
        mpfr_init(r18503);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18500, x, MPFR_RNDN);
        mpfr_abs(r18501, r18500, MPFR_RNDN);
        mpfr_div(r18502, r18501, r18500, MPFR_RNDN);
        mpfr_sub(r18503, r18499, r18502, MPFR_RNDN);
        return mpfr_get_d(r18503, MPFR_RNDN);
}

