#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 r57927 = 6.0;
        float r57928 = x;
        float r57929 = 1.0;
        float r57930 = r57928 - r57929;
        float r57931 = r57927 * r57930;
        float r57932 = r57928 + r57929;
        float r57933 = 4.0;
        float r57934 = sqrt(r57928);
        float r57935 = r57933 * r57934;
        float r57936 = r57932 + r57935;
        float r57937 = r57931 / r57936;
        return r57937;
}

double f_id(double x) {
        double r57938 = 6.0;
        double r57939 = x;
        double r57940 = 1.0;
        double r57941 = r57939 - r57940;
        double r57942 = r57938 * r57941;
        double r57943 = r57939 + r57940;
        double r57944 = 4.0;
        double r57945 = sqrt(r57939);
        double r57946 = r57944 * r57945;
        double r57947 = r57943 + r57946;
        double r57948 = r57942 / r57947;
        return r57948;
}


double f_of(float x) {
        float r57949 = 6.0;
        float r57950 = 1;
        float r57951 = r57949 / r57950;
        float r57952 = x;
        float r57953 = 1.0;
        float r57954 = r57952 - r57953;
        float r57955 = r57952 + r57953;
        float r57956 = 4.0;
        float r57957 = sqrt(r57952);
        float r57958 = r57956 * r57957;
        float r57959 = r57955 + r57958;
        float r57960 = r57954 / r57959;
        float r57961 = r57951 * r57960;
        return r57961;
}

double f_od(double x) {
        double r57962 = 6.0;
        double r57963 = 1;
        double r57964 = r57962 / r57963;
        double r57965 = x;
        double r57966 = 1.0;
        double r57967 = r57965 - r57966;
        double r57968 = r57965 + r57966;
        double r57969 = 4.0;
        double r57970 = sqrt(r57965);
        double r57971 = r57969 * r57970;
        double r57972 = r57968 + r57971;
        double r57973 = r57967 / r57972;
        double r57974 = r57964 * r57973;
        return r57974;
}

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 r57975, r57976, r57977, r57978, r57979, r57980, r57981, r57982, r57983, r57984, r57985;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57975, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57976);
        mpfr_init_set_str(r57977, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57978);
        mpfr_init(r57979);
        mpfr_init(r57980);
        mpfr_init_set_str(r57981, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57982);
        mpfr_init(r57983);
        mpfr_init(r57984);
        mpfr_init(r57985);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57976, x, MPFR_RNDN);
        ;
        mpfr_sub(r57978, r57976, r57977, MPFR_RNDN);
        mpfr_mul(r57979, r57975, r57978, MPFR_RNDN);
        mpfr_add(r57980, r57976, r57977, MPFR_RNDN);
        ;
        mpfr_sqrt(r57982, r57976, MPFR_RNDN);
        mpfr_mul(r57983, r57981, r57982, MPFR_RNDN);
        mpfr_add(r57984, r57980, r57983, MPFR_RNDN);
        mpfr_div(r57985, r57979, r57984, MPFR_RNDN);
        return mpfr_get_d(r57985, MPFR_RNDN);
}

static mpfr_t r57986, r57987, r57988, r57989, r57990, r57991, r57992, r57993, r57994, r57995, r57996, r57997, r57998;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57986, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57987, "1", 10, MPFR_RNDN);
        mpfr_init(r57988);
        mpfr_init(r57989);
        mpfr_init_set_str(r57990, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57991);
        mpfr_init(r57992);
        mpfr_init_set_str(r57993, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57994);
        mpfr_init(r57995);
        mpfr_init(r57996);
        mpfr_init(r57997);
        mpfr_init(r57998);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57988, r57986, r57987, MPFR_RNDN);
        mpfr_set_d(r57989, x, MPFR_RNDN);
        ;
        mpfr_sub(r57991, r57989, r57990, MPFR_RNDN);
        mpfr_add(r57992, r57989, r57990, MPFR_RNDN);
        ;
        mpfr_sqrt(r57994, r57989, MPFR_RNDN);
        mpfr_mul(r57995, r57993, r57994, MPFR_RNDN);
        mpfr_add(r57996, r57992, r57995, MPFR_RNDN);
        mpfr_div(r57997, r57991, r57996, MPFR_RNDN);
        mpfr_mul(r57998, r57988, r57997, MPFR_RNDN);
        return mpfr_get_d(r57998, MPFR_RNDN);
}

static mpfr_t r57999, r58000, r58001, r58002, r58003, r58004, r58005, r58006, r58007, r58008, r58009, r58010, r58011;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57999, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r58000, "1", 10, MPFR_RNDN);
        mpfr_init(r58001);
        mpfr_init(r58002);
        mpfr_init_set_str(r58003, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58004);
        mpfr_init(r58005);
        mpfr_init_set_str(r58006, "4.0", 10, MPFR_RNDN);
        mpfr_init(r58007);
        mpfr_init(r58008);
        mpfr_init(r58009);
        mpfr_init(r58010);
        mpfr_init(r58011);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r58001, r57999, r58000, MPFR_RNDN);
        mpfr_set_d(r58002, x, MPFR_RNDN);
        ;
        mpfr_sub(r58004, r58002, r58003, MPFR_RNDN);
        mpfr_add(r58005, r58002, r58003, MPFR_RNDN);
        ;
        mpfr_sqrt(r58007, r58002, MPFR_RNDN);
        mpfr_mul(r58008, r58006, r58007, MPFR_RNDN);
        mpfr_add(r58009, r58005, r58008, MPFR_RNDN);
        mpfr_div(r58010, r58004, r58009, MPFR_RNDN);
        mpfr_mul(r58011, r58001, r58010, MPFR_RNDN);
        return mpfr_get_d(r58011, MPFR_RNDN);
}

