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

char *name = "2isqrt (example 3.6)";

double f_if(float x) {
        float r27379 = 1;
        float r27380 = x;
        float r27381 = sqrt(r27380);
        float r27382 = r27379 / r27381;
        float r27383 = r27380 + r27379;
        float r27384 = sqrt(r27383);
        float r27385 = r27379 / r27384;
        float r27386 = r27382 - r27385;
        return r27386;
}

double f_id(double x) {
        double r27387 = 1;
        double r27388 = x;
        double r27389 = sqrt(r27388);
        double r27390 = r27387 / r27389;
        double r27391 = r27388 + r27387;
        double r27392 = sqrt(r27391);
        double r27393 = r27387 / r27392;
        double r27394 = r27390 - r27393;
        return r27394;
}


double f_of(float x) {
        float r27395 = 1;
        float r27396 = x;
        float r27397 = r27395 / r27396;
        float r27398 = sqrt(r27397);
        float r27399 = r27396 + r27395;
        float r27400 = sqrt(r27399);
        float r27401 = r27398 / r27400;
        float r27402 = sqrt(r27396);
        float r27403 = r27400 / r27402;
        float r27404 = r27395 + r27403;
        float r27405 = r27398 / r27404;
        float r27406 = r27401 * r27405;
        return r27406;
}

double f_od(double x) {
        double r27407 = 1;
        double r27408 = x;
        double r27409 = r27407 / r27408;
        double r27410 = sqrt(r27409);
        double r27411 = r27408 + r27407;
        double r27412 = sqrt(r27411);
        double r27413 = r27410 / r27412;
        double r27414 = sqrt(r27408);
        double r27415 = r27412 / r27414;
        double r27416 = r27407 + r27415;
        double r27417 = r27410 / r27416;
        double r27418 = r27413 * r27417;
        return r27418;
}

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 r27419, r27420, r27421, r27422, r27423, r27424, r27425, r27426;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r27419, "1", 10, MPFR_RNDN);
        mpfr_init(r27420);
        mpfr_init(r27421);
        mpfr_init(r27422);
        mpfr_init(r27423);
        mpfr_init(r27424);
        mpfr_init(r27425);
        mpfr_init(r27426);
}

double f_im(double x) {
        ;
        mpfr_set_d(r27420, x, MPFR_RNDN);
        mpfr_sqrt(r27421, r27420, MPFR_RNDN);
        mpfr_div(r27422, r27419, r27421, MPFR_RNDN);
        mpfr_add(r27423, r27420, r27419, MPFR_RNDN);
        mpfr_sqrt(r27424, r27423, MPFR_RNDN);
        mpfr_div(r27425, r27419, r27424, MPFR_RNDN);
        mpfr_sub(r27426, r27422, r27425, MPFR_RNDN);
        return mpfr_get_d(r27426, MPFR_RNDN);
}

static mpfr_t r27427, r27428, r27429, r27430, r27431, r27432, r27433, r27434, r27435, r27436, r27437, r27438;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r27427, "1", 10, MPFR_RNDN);
        mpfr_init(r27428);
        mpfr_init(r27429);
        mpfr_init(r27430);
        mpfr_init(r27431);
        mpfr_init(r27432);
        mpfr_init(r27433);
        mpfr_init(r27434);
        mpfr_init(r27435);
        mpfr_init(r27436);
        mpfr_init(r27437);
        mpfr_init(r27438);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r27428, x, MPFR_RNDN);
        mpfr_div(r27429, r27427, r27428, MPFR_RNDN);
        mpfr_sqrt(r27430, r27429, MPFR_RNDN);
        mpfr_add(r27431, r27428, r27427, MPFR_RNDN);
        mpfr_sqrt(r27432, r27431, MPFR_RNDN);
        mpfr_div(r27433, r27430, r27432, MPFR_RNDN);
        mpfr_sqrt(r27434, r27428, MPFR_RNDN);
        mpfr_div(r27435, r27432, r27434, MPFR_RNDN);
        mpfr_add(r27436, r27427, r27435, MPFR_RNDN);
        mpfr_div(r27437, r27430, r27436, MPFR_RNDN);
        mpfr_mul(r27438, r27433, r27437, MPFR_RNDN);
        return mpfr_get_d(r27438, MPFR_RNDN);
}

static mpfr_t r27439, r27440, r27441, r27442, r27443, r27444, r27445, r27446, r27447, r27448, r27449, r27450;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r27439, "1", 10, MPFR_RNDN);
        mpfr_init(r27440);
        mpfr_init(r27441);
        mpfr_init(r27442);
        mpfr_init(r27443);
        mpfr_init(r27444);
        mpfr_init(r27445);
        mpfr_init(r27446);
        mpfr_init(r27447);
        mpfr_init(r27448);
        mpfr_init(r27449);
        mpfr_init(r27450);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r27440, x, MPFR_RNDN);
        mpfr_div(r27441, r27439, r27440, MPFR_RNDN);
        mpfr_sqrt(r27442, r27441, MPFR_RNDN);
        mpfr_add(r27443, r27440, r27439, MPFR_RNDN);
        mpfr_sqrt(r27444, r27443, MPFR_RNDN);
        mpfr_div(r27445, r27442, r27444, MPFR_RNDN);
        mpfr_sqrt(r27446, r27440, MPFR_RNDN);
        mpfr_div(r27447, r27444, r27446, MPFR_RNDN);
        mpfr_add(r27448, r27439, r27447, MPFR_RNDN);
        mpfr_div(r27449, r27442, r27448, MPFR_RNDN);
        mpfr_mul(r27450, r27445, r27449, MPFR_RNDN);
        return mpfr_get_d(r27450, MPFR_RNDN);
}

