#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 r27775 = x;
        float r27776 = r27775 / r27775;
        float r27777 = 1;
        float r27778 = r27777 / r27775;
        float r27779 = r27775 * r27775;
        float r27780 = sqrt(r27779);
        float r27781 = r27778 * r27780;
        float r27782 = r27776 - r27781;
        return r27782;
}

double f_id(double x) {
        double r27783 = x;
        double r27784 = r27783 / r27783;
        double r27785 = 1;
        double r27786 = r27785 / r27783;
        double r27787 = r27783 * r27783;
        double r27788 = sqrt(r27787);
        double r27789 = r27786 * r27788;
        double r27790 = r27784 - r27789;
        return r27790;
}


double f_of(float x) {
        float r27791 = 1;
        float r27792 = x;
        float r27793 = fabs(r27792);
        float r27794 = r27793 / r27792;
        float r27795 = r27791 - r27794;
        return r27795;
}

double f_od(double x) {
        double r27796 = 1;
        double r27797 = x;
        double r27798 = fabs(r27797);
        double r27799 = r27798 / r27797;
        double r27800 = r27796 - r27799;
        return r27800;
}

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 r27801, r27802, r27803, r27804, r27805, r27806, r27807, r27808;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27801);
        mpfr_init(r27802);
        mpfr_init_set_str(r27803, "1", 10, MPFR_RNDN);
        mpfr_init(r27804);
        mpfr_init(r27805);
        mpfr_init(r27806);
        mpfr_init(r27807);
        mpfr_init(r27808);
}

double f_im(double x) {
        mpfr_set_d(r27801, x, MPFR_RNDN);
        mpfr_div(r27802, r27801, r27801, MPFR_RNDN);
        ;
        mpfr_div(r27804, r27803, r27801, MPFR_RNDN);
        mpfr_mul(r27805, r27801, r27801, MPFR_RNDN);
        mpfr_sqrt(r27806, r27805, MPFR_RNDN);
        mpfr_mul(r27807, r27804, r27806, MPFR_RNDN);
        mpfr_sub(r27808, r27802, r27807, MPFR_RNDN);
        return mpfr_get_d(r27808, MPFR_RNDN);
}

static mpfr_t r27809, r27810, r27811, r27812, r27813;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27809, "1", 10, MPFR_RNDN);
        mpfr_init(r27810);
        mpfr_init(r27811);
        mpfr_init(r27812);
        mpfr_init(r27813);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r27810, x, MPFR_RNDN);
        mpfr_abs(r27811, r27810, MPFR_RNDN);
        mpfr_div(r27812, r27811, r27810, MPFR_RNDN);
        mpfr_sub(r27813, r27809, r27812, MPFR_RNDN);
        return mpfr_get_d(r27813, MPFR_RNDN);
}

static mpfr_t r27814, r27815, r27816, r27817, r27818;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27814, "1", 10, MPFR_RNDN);
        mpfr_init(r27815);
        mpfr_init(r27816);
        mpfr_init(r27817);
        mpfr_init(r27818);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r27815, x, MPFR_RNDN);
        mpfr_abs(r27816, r27815, MPFR_RNDN);
        mpfr_div(r27817, r27816, r27815, MPFR_RNDN);
        mpfr_sub(r27818, r27814, r27817, MPFR_RNDN);
        return mpfr_get_d(r27818, MPFR_RNDN);
}

