#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "sqrt times";

double f_if(float x) {
        float r8051 = x;
        float r8052 = 1;
        float r8053 = r8051 - r8052;
        float r8054 = sqrt(r8053);
        float r8055 = sqrt(r8051);
        float r8056 = r8054 * r8055;
        return r8056;
}

double f_id(double x) {
        double r8057 = x;
        double r8058 = 1;
        double r8059 = r8057 - r8058;
        double r8060 = sqrt(r8059);
        double r8061 = sqrt(r8057);
        double r8062 = r8060 * r8061;
        return r8062;
}


double f_of(float x) {
        float r8063 = x;
        float r8064 = 1;
        float r8065 = r8063 - r8064;
        float r8066 = sqrt(r8065);
        float r8067 = sqrt(r8063);
        float r8068 = r8066 * r8067;
        return r8068;
}

double f_od(double x) {
        double r8069 = x;
        double r8070 = 1;
        double r8071 = r8069 - r8070;
        double r8072 = sqrt(r8071);
        double r8073 = sqrt(r8069);
        double r8074 = r8072 * r8073;
        return r8074;
}

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 r8075, r8076, r8077, r8078, r8079, r8080;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8075);
        mpfr_init_set_str(r8076, "1", 10, MPFR_RNDN);
        mpfr_init(r8077);
        mpfr_init(r8078);
        mpfr_init(r8079);
        mpfr_init(r8080);
}

double f_im(double x) {
        mpfr_set_d(r8075, x, MPFR_RNDN);
        ;
        mpfr_sub(r8077, r8075, r8076, MPFR_RNDN);
        mpfr_sqrt(r8078, r8077, MPFR_RNDN);
        mpfr_sqrt(r8079, r8075, MPFR_RNDN);
        mpfr_mul(r8080, r8078, r8079, MPFR_RNDN);
        return mpfr_get_d(r8080, MPFR_RNDN);
}

static mpfr_t r8081, r8082, r8083, r8084, r8085, r8086;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8081);
        mpfr_init_set_str(r8082, "1", 10, MPFR_RNDN);
        mpfr_init(r8083);
        mpfr_init(r8084);
        mpfr_init(r8085);
        mpfr_init(r8086);
}

double f_fm(double x) {
        mpfr_set_d(r8081, x, MPFR_RNDN);
        ;
        mpfr_sub(r8083, r8081, r8082, MPFR_RNDN);
        mpfr_sqrt(r8084, r8083, MPFR_RNDN);
        mpfr_sqrt(r8085, r8081, MPFR_RNDN);
        mpfr_mul(r8086, r8084, r8085, MPFR_RNDN);
        return mpfr_get_d(r8086, MPFR_RNDN);
}

static mpfr_t r8087, r8088, r8089, r8090, r8091, r8092;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8087);
        mpfr_init_set_str(r8088, "1", 10, MPFR_RNDN);
        mpfr_init(r8089);
        mpfr_init(r8090);
        mpfr_init(r8091);
        mpfr_init(r8092);
}

double f_dm(double x) {
        mpfr_set_d(r8087, x, MPFR_RNDN);
        ;
        mpfr_sub(r8089, r8087, r8088, MPFR_RNDN);
        mpfr_sqrt(r8090, r8089, MPFR_RNDN);
        mpfr_sqrt(r8091, r8087, MPFR_RNDN);
        mpfr_mul(r8092, r8090, r8091, MPFR_RNDN);
        return mpfr_get_d(r8092, MPFR_RNDN);
}

