#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 r57843 = 6.0;
        float r57844 = x;
        float r57845 = 1.0;
        float r57846 = r57844 - r57845;
        float r57847 = r57843 * r57846;
        float r57848 = r57844 + r57845;
        float r57849 = 4.0;
        float r57850 = sqrt(r57844);
        float r57851 = r57849 * r57850;
        float r57852 = r57848 + r57851;
        float r57853 = r57847 / r57852;
        return r57853;
}

double f_id(double x) {
        double r57854 = 6.0;
        double r57855 = x;
        double r57856 = 1.0;
        double r57857 = r57855 - r57856;
        double r57858 = r57854 * r57857;
        double r57859 = r57855 + r57856;
        double r57860 = 4.0;
        double r57861 = sqrt(r57855);
        double r57862 = r57860 * r57861;
        double r57863 = r57859 + r57862;
        double r57864 = r57858 / r57863;
        return r57864;
}


double f_of(float x) {
        float r57865 = 6.0;
        float r57866 = 1;
        float r57867 = r57865 / r57866;
        float r57868 = x;
        float r57869 = 1.0;
        float r57870 = r57868 - r57869;
        float r57871 = r57868 + r57869;
        float r57872 = 4.0;
        float r57873 = sqrt(r57868);
        float r57874 = r57872 * r57873;
        float r57875 = r57871 + r57874;
        float r57876 = r57870 / r57875;
        float r57877 = r57867 * r57876;
        return r57877;
}

double f_od(double x) {
        double r57878 = 6.0;
        double r57879 = 1;
        double r57880 = r57878 / r57879;
        double r57881 = x;
        double r57882 = 1.0;
        double r57883 = r57881 - r57882;
        double r57884 = r57881 + r57882;
        double r57885 = 4.0;
        double r57886 = sqrt(r57881);
        double r57887 = r57885 * r57886;
        double r57888 = r57884 + r57887;
        double r57889 = r57883 / r57888;
        double r57890 = r57880 * r57889;
        return r57890;
}

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 r57891, r57892, r57893, r57894, r57895, r57896, r57897, r57898, r57899, r57900, r57901;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57891, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57892);
        mpfr_init_set_str(r57893, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57894);
        mpfr_init(r57895);
        mpfr_init(r57896);
        mpfr_init_set_str(r57897, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57898);
        mpfr_init(r57899);
        mpfr_init(r57900);
        mpfr_init(r57901);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57892, x, MPFR_RNDN);
        ;
        mpfr_sub(r57894, r57892, r57893, MPFR_RNDN);
        mpfr_mul(r57895, r57891, r57894, MPFR_RNDN);
        mpfr_add(r57896, r57892, r57893, MPFR_RNDN);
        ;
        mpfr_sqrt(r57898, r57892, MPFR_RNDN);
        mpfr_mul(r57899, r57897, r57898, MPFR_RNDN);
        mpfr_add(r57900, r57896, r57899, MPFR_RNDN);
        mpfr_div(r57901, r57895, r57900, MPFR_RNDN);
        return mpfr_get_d(r57901, MPFR_RNDN);
}

static mpfr_t r57902, r57903, r57904, r57905, r57906, r57907, r57908, r57909, r57910, r57911, r57912, r57913, r57914;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57902, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57903, "1", 10, MPFR_RNDN);
        mpfr_init(r57904);
        mpfr_init(r57905);
        mpfr_init_set_str(r57906, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57907);
        mpfr_init(r57908);
        mpfr_init_set_str(r57909, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57910);
        mpfr_init(r57911);
        mpfr_init(r57912);
        mpfr_init(r57913);
        mpfr_init(r57914);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57904, r57902, r57903, MPFR_RNDN);
        mpfr_set_d(r57905, x, MPFR_RNDN);
        ;
        mpfr_sub(r57907, r57905, r57906, MPFR_RNDN);
        mpfr_add(r57908, r57905, r57906, MPFR_RNDN);
        ;
        mpfr_sqrt(r57910, r57905, MPFR_RNDN);
        mpfr_mul(r57911, r57909, r57910, MPFR_RNDN);
        mpfr_add(r57912, r57908, r57911, MPFR_RNDN);
        mpfr_div(r57913, r57907, r57912, MPFR_RNDN);
        mpfr_mul(r57914, r57904, r57913, MPFR_RNDN);
        return mpfr_get_d(r57914, MPFR_RNDN);
}

static mpfr_t r57915, r57916, r57917, r57918, r57919, r57920, r57921, r57922, r57923, r57924, r57925, r57926, r57927;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57915, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57916, "1", 10, MPFR_RNDN);
        mpfr_init(r57917);
        mpfr_init(r57918);
        mpfr_init_set_str(r57919, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57920);
        mpfr_init(r57921);
        mpfr_init_set_str(r57922, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57923);
        mpfr_init(r57924);
        mpfr_init(r57925);
        mpfr_init(r57926);
        mpfr_init(r57927);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r57917, r57915, r57916, MPFR_RNDN);
        mpfr_set_d(r57918, x, MPFR_RNDN);
        ;
        mpfr_sub(r57920, r57918, r57919, MPFR_RNDN);
        mpfr_add(r57921, r57918, r57919, MPFR_RNDN);
        ;
        mpfr_sqrt(r57923, r57918, MPFR_RNDN);
        mpfr_mul(r57924, r57922, r57923, MPFR_RNDN);
        mpfr_add(r57925, r57921, r57924, MPFR_RNDN);
        mpfr_div(r57926, r57920, r57925, MPFR_RNDN);
        mpfr_mul(r57927, r57917, r57926, MPFR_RNDN);
        return mpfr_get_d(r57927, MPFR_RNDN);
}

