#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 r57769 = 6.0;
        float r57770 = x;
        float r57771 = 1.0;
        float r57772 = r57770 - r57771;
        float r57773 = r57769 * r57772;
        float r57774 = r57770 + r57771;
        float r57775 = 4.0;
        float r57776 = sqrt(r57770);
        float r57777 = r57775 * r57776;
        float r57778 = r57774 + r57777;
        float r57779 = r57773 / r57778;
        return r57779;
}

double f_id(double x) {
        double r57780 = 6.0;
        double r57781 = x;
        double r57782 = 1.0;
        double r57783 = r57781 - r57782;
        double r57784 = r57780 * r57783;
        double r57785 = r57781 + r57782;
        double r57786 = 4.0;
        double r57787 = sqrt(r57781);
        double r57788 = r57786 * r57787;
        double r57789 = r57785 + r57788;
        double r57790 = r57784 / r57789;
        return r57790;
}


double f_of(float x) {
        float r57791 = 6.0;
        float r57792 = 1;
        float r57793 = r57791 / r57792;
        float r57794 = x;
        float r57795 = 1.0;
        float r57796 = r57794 - r57795;
        float r57797 = r57794 + r57795;
        float r57798 = 4.0;
        float r57799 = sqrt(r57794);
        float r57800 = r57798 * r57799;
        float r57801 = r57797 + r57800;
        float r57802 = r57796 / r57801;
        float r57803 = r57793 * r57802;
        return r57803;
}

double f_od(double x) {
        double r57804 = 6.0;
        double r57805 = 1;
        double r57806 = r57804 / r57805;
        double r57807 = x;
        double r57808 = 1.0;
        double r57809 = r57807 - r57808;
        double r57810 = r57807 + r57808;
        double r57811 = 4.0;
        double r57812 = sqrt(r57807);
        double r57813 = r57811 * r57812;
        double r57814 = r57810 + r57813;
        double r57815 = r57809 / r57814;
        double r57816 = r57806 * r57815;
        return r57816;
}

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 r57817, r57818, r57819, r57820, r57821, r57822, r57823, r57824, r57825, r57826, r57827;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57817, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57818);
        mpfr_init_set_str(r57819, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57820);
        mpfr_init(r57821);
        mpfr_init(r57822);
        mpfr_init_set_str(r57823, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57824);
        mpfr_init(r57825);
        mpfr_init(r57826);
        mpfr_init(r57827);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57818, x, MPFR_RNDN);
        ;
        mpfr_sub(r57820, r57818, r57819, MPFR_RNDN);
        mpfr_mul(r57821, r57817, r57820, MPFR_RNDN);
        mpfr_add(r57822, r57818, r57819, MPFR_RNDN);
        ;
        mpfr_sqrt(r57824, r57818, MPFR_RNDN);
        mpfr_mul(r57825, r57823, r57824, MPFR_RNDN);
        mpfr_add(r57826, r57822, r57825, MPFR_RNDN);
        mpfr_div(r57827, r57821, r57826, MPFR_RNDN);
        return mpfr_get_d(r57827, MPFR_RNDN);
}

static mpfr_t r57828, r57829, r57830, r57831, r57832, r57833, r57834, r57835, r57836, r57837, r57838, r57839, r57840;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57828, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57829, "1", 10, MPFR_RNDN);
        mpfr_init(r57830);
        mpfr_init(r57831);
        mpfr_init_set_str(r57832, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57833);
        mpfr_init(r57834);
        mpfr_init_set_str(r57835, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57836);
        mpfr_init(r57837);
        mpfr_init(r57838);
        mpfr_init(r57839);
        mpfr_init(r57840);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57830, r57828, r57829, MPFR_RNDN);
        mpfr_set_d(r57831, x, MPFR_RNDN);
        ;
        mpfr_sub(r57833, r57831, r57832, MPFR_RNDN);
        mpfr_add(r57834, r57831, r57832, MPFR_RNDN);
        ;
        mpfr_sqrt(r57836, r57831, MPFR_RNDN);
        mpfr_mul(r57837, r57835, r57836, MPFR_RNDN);
        mpfr_add(r57838, r57834, r57837, MPFR_RNDN);
        mpfr_div(r57839, r57833, r57838, MPFR_RNDN);
        mpfr_mul(r57840, r57830, r57839, MPFR_RNDN);
        return mpfr_get_d(r57840, MPFR_RNDN);
}

static mpfr_t r57841, r57842, r57843, r57844, r57845, r57846, r57847, r57848, r57849, r57850, r57851, r57852, r57853;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57841, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57842, "1", 10, MPFR_RNDN);
        mpfr_init(r57843);
        mpfr_init(r57844);
        mpfr_init_set_str(r57845, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57846);
        mpfr_init(r57847);
        mpfr_init_set_str(r57848, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57849);
        mpfr_init(r57850);
        mpfr_init(r57851);
        mpfr_init(r57852);
        mpfr_init(r57853);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r57843, r57841, r57842, MPFR_RNDN);
        mpfr_set_d(r57844, x, MPFR_RNDN);
        ;
        mpfr_sub(r57846, r57844, r57845, MPFR_RNDN);
        mpfr_add(r57847, r57844, r57845, MPFR_RNDN);
        ;
        mpfr_sqrt(r57849, r57844, MPFR_RNDN);
        mpfr_mul(r57850, r57848, r57849, MPFR_RNDN);
        mpfr_add(r57851, r57847, r57850, MPFR_RNDN);
        mpfr_div(r57852, r57846, r57851, MPFR_RNDN);
        mpfr_mul(r57853, r57843, r57852, MPFR_RNDN);
        return mpfr_get_d(r57853, MPFR_RNDN);
}

