#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 r57695 = 6.0;
        float r57696 = x;
        float r57697 = 1.0;
        float r57698 = r57696 - r57697;
        float r57699 = r57695 * r57698;
        float r57700 = r57696 + r57697;
        float r57701 = 4.0;
        float r57702 = sqrt(r57696);
        float r57703 = r57701 * r57702;
        float r57704 = r57700 + r57703;
        float r57705 = r57699 / r57704;
        return r57705;
}

double f_id(double x) {
        double r57706 = 6.0;
        double r57707 = x;
        double r57708 = 1.0;
        double r57709 = r57707 - r57708;
        double r57710 = r57706 * r57709;
        double r57711 = r57707 + r57708;
        double r57712 = 4.0;
        double r57713 = sqrt(r57707);
        double r57714 = r57712 * r57713;
        double r57715 = r57711 + r57714;
        double r57716 = r57710 / r57715;
        return r57716;
}


double f_of(float x) {
        float r57717 = 6.0;
        float r57718 = 1;
        float r57719 = r57717 / r57718;
        float r57720 = x;
        float r57721 = 1.0;
        float r57722 = r57720 - r57721;
        float r57723 = r57720 + r57721;
        float r57724 = 4.0;
        float r57725 = sqrt(r57720);
        float r57726 = r57724 * r57725;
        float r57727 = r57723 + r57726;
        float r57728 = r57722 / r57727;
        float r57729 = r57719 * r57728;
        return r57729;
}

double f_od(double x) {
        double r57730 = 6.0;
        double r57731 = 1;
        double r57732 = r57730 / r57731;
        double r57733 = x;
        double r57734 = 1.0;
        double r57735 = r57733 - r57734;
        double r57736 = r57733 + r57734;
        double r57737 = 4.0;
        double r57738 = sqrt(r57733);
        double r57739 = r57737 * r57738;
        double r57740 = r57736 + r57739;
        double r57741 = r57735 / r57740;
        double r57742 = r57732 * r57741;
        return r57742;
}

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 r57743, r57744, r57745, r57746, r57747, r57748, r57749, r57750, r57751, r57752, r57753;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57743, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57744);
        mpfr_init_set_str(r57745, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57746);
        mpfr_init(r57747);
        mpfr_init(r57748);
        mpfr_init_set_str(r57749, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57750);
        mpfr_init(r57751);
        mpfr_init(r57752);
        mpfr_init(r57753);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57744, x, MPFR_RNDN);
        ;
        mpfr_sub(r57746, r57744, r57745, MPFR_RNDN);
        mpfr_mul(r57747, r57743, r57746, MPFR_RNDN);
        mpfr_add(r57748, r57744, r57745, MPFR_RNDN);
        ;
        mpfr_sqrt(r57750, r57744, MPFR_RNDN);
        mpfr_mul(r57751, r57749, r57750, MPFR_RNDN);
        mpfr_add(r57752, r57748, r57751, MPFR_RNDN);
        mpfr_div(r57753, r57747, r57752, MPFR_RNDN);
        return mpfr_get_d(r57753, MPFR_RNDN);
}

static mpfr_t r57754, r57755, r57756, r57757, r57758, r57759, r57760, r57761, r57762, r57763, r57764, r57765, r57766;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57754, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57755, "1", 10, MPFR_RNDN);
        mpfr_init(r57756);
        mpfr_init(r57757);
        mpfr_init_set_str(r57758, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57759);
        mpfr_init(r57760);
        mpfr_init_set_str(r57761, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57762);
        mpfr_init(r57763);
        mpfr_init(r57764);
        mpfr_init(r57765);
        mpfr_init(r57766);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57756, r57754, r57755, MPFR_RNDN);
        mpfr_set_d(r57757, x, MPFR_RNDN);
        ;
        mpfr_sub(r57759, r57757, r57758, MPFR_RNDN);
        mpfr_add(r57760, r57757, r57758, MPFR_RNDN);
        ;
        mpfr_sqrt(r57762, r57757, MPFR_RNDN);
        mpfr_mul(r57763, r57761, r57762, MPFR_RNDN);
        mpfr_add(r57764, r57760, r57763, MPFR_RNDN);
        mpfr_div(r57765, r57759, r57764, MPFR_RNDN);
        mpfr_mul(r57766, r57756, r57765, MPFR_RNDN);
        return mpfr_get_d(r57766, MPFR_RNDN);
}

static mpfr_t r57767, r57768, r57769, r57770, r57771, r57772, r57773, r57774, r57775, r57776, r57777, r57778, r57779;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57767, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57768, "1", 10, MPFR_RNDN);
        mpfr_init(r57769);
        mpfr_init(r57770);
        mpfr_init_set_str(r57771, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57772);
        mpfr_init(r57773);
        mpfr_init_set_str(r57774, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57775);
        mpfr_init(r57776);
        mpfr_init(r57777);
        mpfr_init(r57778);
        mpfr_init(r57779);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r57769, r57767, r57768, MPFR_RNDN);
        mpfr_set_d(r57770, x, MPFR_RNDN);
        ;
        mpfr_sub(r57772, r57770, r57771, MPFR_RNDN);
        mpfr_add(r57773, r57770, r57771, MPFR_RNDN);
        ;
        mpfr_sqrt(r57775, r57770, MPFR_RNDN);
        mpfr_mul(r57776, r57774, r57775, MPFR_RNDN);
        mpfr_add(r57777, r57773, r57776, MPFR_RNDN);
        mpfr_div(r57778, r57772, r57777, MPFR_RNDN);
        mpfr_mul(r57779, r57769, r57778, MPFR_RNDN);
        return mpfr_get_d(r57779, MPFR_RNDN);
}

