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

char *name = "Data.Approximate.Numerics:blog from approximate-0.2.2.1";

double f_if(float x) {
        float r56478 = 6.0;
        float r56479 = x;
        float r56480 = 1.0;
        float r56481 = r56479 - r56480;
        float r56482 = r56478 * r56481;
        float r56483 = r56479 + r56480;
        float r56484 = 4.0;
        float r56485 = sqrt(r56479);
        float r56486 = r56484 * r56485;
        float r56487 = r56483 + r56486;
        float r56488 = r56482 / r56487;
        return r56488;
}

double f_id(double x) {
        double r56489 = 6.0;
        double r56490 = x;
        double r56491 = 1.0;
        double r56492 = r56490 - r56491;
        double r56493 = r56489 * r56492;
        double r56494 = r56490 + r56491;
        double r56495 = 4.0;
        double r56496 = sqrt(r56490);
        double r56497 = r56495 * r56496;
        double r56498 = r56494 + r56497;
        double r56499 = r56493 / r56498;
        return r56499;
}


double f_of(float x) {
        float r56500 = 6.0;
        float r56501 = 1;
        float r56502 = r56500 / r56501;
        float r56503 = x;
        float r56504 = 1.0;
        float r56505 = r56503 - r56504;
        float r56506 = r56503 + r56504;
        float r56507 = 4.0;
        float r56508 = sqrt(r56503);
        float r56509 = r56507 * r56508;
        float r56510 = r56506 + r56509;
        float r56511 = r56505 / r56510;
        float r56512 = r56502 * r56511;
        return r56512;
}

double f_od(double x) {
        double r56513 = 6.0;
        double r56514 = 1;
        double r56515 = r56513 / r56514;
        double r56516 = x;
        double r56517 = 1.0;
        double r56518 = r56516 - r56517;
        double r56519 = r56516 + r56517;
        double r56520 = 4.0;
        double r56521 = sqrt(r56516);
        double r56522 = r56520 * r56521;
        double r56523 = r56519 + r56522;
        double r56524 = r56518 / r56523;
        double r56525 = r56515 * r56524;
        return r56525;
}

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 r56526, r56527, r56528, r56529, r56530, r56531, r56532, r56533, r56534, r56535, r56536;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56526, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56527);
        mpfr_init_set_str(r56528, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56529);
        mpfr_init(r56530);
        mpfr_init(r56531);
        mpfr_init_set_str(r56532, "4.0", 10, MPFR_RNDN);
        mpfr_init(r56533);
        mpfr_init(r56534);
        mpfr_init(r56535);
        mpfr_init(r56536);
}

double f_im(double x) {
        ;
        mpfr_set_d(r56527, x, MPFR_RNDN);
        ;
        mpfr_sub(r56529, r56527, r56528, MPFR_RNDN);
        mpfr_mul(r56530, r56526, r56529, MPFR_RNDN);
        mpfr_add(r56531, r56527, r56528, MPFR_RNDN);
        ;
        mpfr_sqrt(r56533, r56527, MPFR_RNDN);
        mpfr_mul(r56534, r56532, r56533, MPFR_RNDN);
        mpfr_add(r56535, r56531, r56534, MPFR_RNDN);
        mpfr_div(r56536, r56530, r56535, MPFR_RNDN);
        return mpfr_get_d(r56536, MPFR_RNDN);
}

static mpfr_t r56537, r56538, r56539, r56540, r56541, r56542, r56543, r56544, r56545, r56546, r56547, r56548, r56549;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56537, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r56538, "1", 10, MPFR_RNDN);
        mpfr_init(r56539);
        mpfr_init(r56540);
        mpfr_init_set_str(r56541, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56542);
        mpfr_init(r56543);
        mpfr_init_set_str(r56544, "4.0", 10, MPFR_RNDN);
        mpfr_init(r56545);
        mpfr_init(r56546);
        mpfr_init(r56547);
        mpfr_init(r56548);
        mpfr_init(r56549);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r56539, r56537, r56538, MPFR_RNDN);
        mpfr_set_d(r56540, x, MPFR_RNDN);
        ;
        mpfr_sub(r56542, r56540, r56541, MPFR_RNDN);
        mpfr_add(r56543, r56540, r56541, MPFR_RNDN);
        ;
        mpfr_sqrt(r56545, r56540, MPFR_RNDN);
        mpfr_mul(r56546, r56544, r56545, MPFR_RNDN);
        mpfr_add(r56547, r56543, r56546, MPFR_RNDN);
        mpfr_div(r56548, r56542, r56547, MPFR_RNDN);
        mpfr_mul(r56549, r56539, r56548, MPFR_RNDN);
        return mpfr_get_d(r56549, MPFR_RNDN);
}

static mpfr_t r56550, r56551, r56552, r56553, r56554, r56555, r56556, r56557, r56558, r56559, r56560, r56561, r56562;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56550, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r56551, "1", 10, MPFR_RNDN);
        mpfr_init(r56552);
        mpfr_init(r56553);
        mpfr_init_set_str(r56554, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56555);
        mpfr_init(r56556);
        mpfr_init_set_str(r56557, "4.0", 10, MPFR_RNDN);
        mpfr_init(r56558);
        mpfr_init(r56559);
        mpfr_init(r56560);
        mpfr_init(r56561);
        mpfr_init(r56562);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r56552, r56550, r56551, MPFR_RNDN);
        mpfr_set_d(r56553, x, MPFR_RNDN);
        ;
        mpfr_sub(r56555, r56553, r56554, MPFR_RNDN);
        mpfr_add(r56556, r56553, r56554, MPFR_RNDN);
        ;
        mpfr_sqrt(r56558, r56553, MPFR_RNDN);
        mpfr_mul(r56559, r56557, r56558, MPFR_RNDN);
        mpfr_add(r56560, r56556, r56559, MPFR_RNDN);
        mpfr_div(r56561, r56555, r56560, MPFR_RNDN);
        mpfr_mul(r56562, r56552, r56561, MPFR_RNDN);
        return mpfr_get_d(r56562, MPFR_RNDN);
}

