#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 r57551 = 6.0;
        float r57552 = x;
        float r57553 = 1.0;
        float r57554 = r57552 - r57553;
        float r57555 = r57551 * r57554;
        float r57556 = r57552 + r57553;
        float r57557 = 4.0;
        float r57558 = sqrt(r57552);
        float r57559 = r57557 * r57558;
        float r57560 = r57556 + r57559;
        float r57561 = r57555 / r57560;
        return r57561;
}

double f_id(double x) {
        double r57562 = 6.0;
        double r57563 = x;
        double r57564 = 1.0;
        double r57565 = r57563 - r57564;
        double r57566 = r57562 * r57565;
        double r57567 = r57563 + r57564;
        double r57568 = 4.0;
        double r57569 = sqrt(r57563);
        double r57570 = r57568 * r57569;
        double r57571 = r57567 + r57570;
        double r57572 = r57566 / r57571;
        return r57572;
}


double f_of(float x) {
        float r57573 = 6.0;
        float r57574 = 1;
        float r57575 = r57573 / r57574;
        float r57576 = x;
        float r57577 = 1.0;
        float r57578 = r57576 - r57577;
        float r57579 = r57576 + r57577;
        float r57580 = 4.0;
        float r57581 = sqrt(r57576);
        float r57582 = r57580 * r57581;
        float r57583 = r57579 + r57582;
        float r57584 = r57578 / r57583;
        float r57585 = r57575 * r57584;
        return r57585;
}

double f_od(double x) {
        double r57586 = 6.0;
        double r57587 = 1;
        double r57588 = r57586 / r57587;
        double r57589 = x;
        double r57590 = 1.0;
        double r57591 = r57589 - r57590;
        double r57592 = r57589 + r57590;
        double r57593 = 4.0;
        double r57594 = sqrt(r57589);
        double r57595 = r57593 * r57594;
        double r57596 = r57592 + r57595;
        double r57597 = r57591 / r57596;
        double r57598 = r57588 * r57597;
        return r57598;
}

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 r57599, r57600, r57601, r57602, r57603, r57604, r57605, r57606, r57607, r57608, r57609;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57599, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57600);
        mpfr_init_set_str(r57601, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57602);
        mpfr_init(r57603);
        mpfr_init(r57604);
        mpfr_init_set_str(r57605, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57606);
        mpfr_init(r57607);
        mpfr_init(r57608);
        mpfr_init(r57609);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57600, x, MPFR_RNDN);
        ;
        mpfr_sub(r57602, r57600, r57601, MPFR_RNDN);
        mpfr_mul(r57603, r57599, r57602, MPFR_RNDN);
        mpfr_add(r57604, r57600, r57601, MPFR_RNDN);
        ;
        mpfr_sqrt(r57606, r57600, MPFR_RNDN);
        mpfr_mul(r57607, r57605, r57606, MPFR_RNDN);
        mpfr_add(r57608, r57604, r57607, MPFR_RNDN);
        mpfr_div(r57609, r57603, r57608, MPFR_RNDN);
        return mpfr_get_d(r57609, MPFR_RNDN);
}

static mpfr_t r57610, r57611, r57612, r57613, r57614, r57615, r57616, r57617, r57618, r57619, r57620, r57621, r57622;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57610, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57611, "1", 10, MPFR_RNDN);
        mpfr_init(r57612);
        mpfr_init(r57613);
        mpfr_init_set_str(r57614, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57615);
        mpfr_init(r57616);
        mpfr_init_set_str(r57617, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57618);
        mpfr_init(r57619);
        mpfr_init(r57620);
        mpfr_init(r57621);
        mpfr_init(r57622);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57612, r57610, r57611, MPFR_RNDN);
        mpfr_set_d(r57613, x, MPFR_RNDN);
        ;
        mpfr_sub(r57615, r57613, r57614, MPFR_RNDN);
        mpfr_add(r57616, r57613, r57614, MPFR_RNDN);
        ;
        mpfr_sqrt(r57618, r57613, MPFR_RNDN);
        mpfr_mul(r57619, r57617, r57618, MPFR_RNDN);
        mpfr_add(r57620, r57616, r57619, MPFR_RNDN);
        mpfr_div(r57621, r57615, r57620, MPFR_RNDN);
        mpfr_mul(r57622, r57612, r57621, MPFR_RNDN);
        return mpfr_get_d(r57622, MPFR_RNDN);
}

static mpfr_t r57623, r57624, r57625, r57626, r57627, r57628, r57629, r57630, r57631, r57632, r57633, r57634, r57635;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57623, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57624, "1", 10, MPFR_RNDN);
        mpfr_init(r57625);
        mpfr_init(r57626);
        mpfr_init_set_str(r57627, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57628);
        mpfr_init(r57629);
        mpfr_init_set_str(r57630, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57631);
        mpfr_init(r57632);
        mpfr_init(r57633);
        mpfr_init(r57634);
        mpfr_init(r57635);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r57625, r57623, r57624, MPFR_RNDN);
        mpfr_set_d(r57626, x, MPFR_RNDN);
        ;
        mpfr_sub(r57628, r57626, r57627, MPFR_RNDN);
        mpfr_add(r57629, r57626, r57627, MPFR_RNDN);
        ;
        mpfr_sqrt(r57631, r57626, MPFR_RNDN);
        mpfr_mul(r57632, r57630, r57631, MPFR_RNDN);
        mpfr_add(r57633, r57629, r57632, MPFR_RNDN);
        mpfr_div(r57634, r57628, r57633, MPFR_RNDN);
        mpfr_mul(r57635, r57625, r57634, MPFR_RNDN);
        return mpfr_get_d(r57635, MPFR_RNDN);
}

