#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 r57623 = 6.0;
        float r57624 = x;
        float r57625 = 1.0;
        float r57626 = r57624 - r57625;
        float r57627 = r57623 * r57626;
        float r57628 = r57624 + r57625;
        float r57629 = 4.0;
        float r57630 = sqrt(r57624);
        float r57631 = r57629 * r57630;
        float r57632 = r57628 + r57631;
        float r57633 = r57627 / r57632;
        return r57633;
}

double f_id(double x) {
        double r57634 = 6.0;
        double r57635 = x;
        double r57636 = 1.0;
        double r57637 = r57635 - r57636;
        double r57638 = r57634 * r57637;
        double r57639 = r57635 + r57636;
        double r57640 = 4.0;
        double r57641 = sqrt(r57635);
        double r57642 = r57640 * r57641;
        double r57643 = r57639 + r57642;
        double r57644 = r57638 / r57643;
        return r57644;
}


double f_of(float x) {
        float r57645 = 6.0;
        float r57646 = 1;
        float r57647 = r57645 / r57646;
        float r57648 = x;
        float r57649 = 1.0;
        float r57650 = r57648 - r57649;
        float r57651 = r57648 + r57649;
        float r57652 = 4.0;
        float r57653 = sqrt(r57648);
        float r57654 = r57652 * r57653;
        float r57655 = r57651 + r57654;
        float r57656 = r57650 / r57655;
        float r57657 = r57647 * r57656;
        return r57657;
}

double f_od(double x) {
        double r57658 = 6.0;
        double r57659 = 1;
        double r57660 = r57658 / r57659;
        double r57661 = x;
        double r57662 = 1.0;
        double r57663 = r57661 - r57662;
        double r57664 = r57661 + r57662;
        double r57665 = 4.0;
        double r57666 = sqrt(r57661);
        double r57667 = r57665 * r57666;
        double r57668 = r57664 + r57667;
        double r57669 = r57663 / r57668;
        double r57670 = r57660 * r57669;
        return r57670;
}

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 r57671, r57672, r57673, r57674, r57675, r57676, r57677, r57678, r57679, r57680, r57681;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57671, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57672);
        mpfr_init_set_str(r57673, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57674);
        mpfr_init(r57675);
        mpfr_init(r57676);
        mpfr_init_set_str(r57677, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57678);
        mpfr_init(r57679);
        mpfr_init(r57680);
        mpfr_init(r57681);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57672, x, MPFR_RNDN);
        ;
        mpfr_sub(r57674, r57672, r57673, MPFR_RNDN);
        mpfr_mul(r57675, r57671, r57674, MPFR_RNDN);
        mpfr_add(r57676, r57672, r57673, MPFR_RNDN);
        ;
        mpfr_sqrt(r57678, r57672, MPFR_RNDN);
        mpfr_mul(r57679, r57677, r57678, MPFR_RNDN);
        mpfr_add(r57680, r57676, r57679, MPFR_RNDN);
        mpfr_div(r57681, r57675, r57680, MPFR_RNDN);
        return mpfr_get_d(r57681, MPFR_RNDN);
}

static mpfr_t r57682, r57683, r57684, r57685, r57686, r57687, r57688, r57689, r57690, r57691, r57692, r57693, r57694;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57682, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57683, "1", 10, MPFR_RNDN);
        mpfr_init(r57684);
        mpfr_init(r57685);
        mpfr_init_set_str(r57686, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57687);
        mpfr_init(r57688);
        mpfr_init_set_str(r57689, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57690);
        mpfr_init(r57691);
        mpfr_init(r57692);
        mpfr_init(r57693);
        mpfr_init(r57694);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57684, r57682, r57683, MPFR_RNDN);
        mpfr_set_d(r57685, x, MPFR_RNDN);
        ;
        mpfr_sub(r57687, r57685, r57686, MPFR_RNDN);
        mpfr_add(r57688, r57685, r57686, MPFR_RNDN);
        ;
        mpfr_sqrt(r57690, r57685, MPFR_RNDN);
        mpfr_mul(r57691, r57689, r57690, MPFR_RNDN);
        mpfr_add(r57692, r57688, r57691, MPFR_RNDN);
        mpfr_div(r57693, r57687, r57692, MPFR_RNDN);
        mpfr_mul(r57694, r57684, r57693, MPFR_RNDN);
        return mpfr_get_d(r57694, MPFR_RNDN);
}

static mpfr_t r57695, r57696, r57697, r57698, r57699, r57700, r57701, r57702, r57703, r57704, r57705, r57706, r57707;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r57695, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57696, "1", 10, MPFR_RNDN);
        mpfr_init(r57697);
        mpfr_init(r57698);
        mpfr_init_set_str(r57699, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57700);
        mpfr_init(r57701);
        mpfr_init_set_str(r57702, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57703);
        mpfr_init(r57704);
        mpfr_init(r57705);
        mpfr_init(r57706);
        mpfr_init(r57707);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r57697, r57695, r57696, MPFR_RNDN);
        mpfr_set_d(r57698, x, MPFR_RNDN);
        ;
        mpfr_sub(r57700, r57698, r57699, MPFR_RNDN);
        mpfr_add(r57701, r57698, r57699, MPFR_RNDN);
        ;
        mpfr_sqrt(r57703, r57698, MPFR_RNDN);
        mpfr_mul(r57704, r57702, r57703, MPFR_RNDN);
        mpfr_add(r57705, r57701, r57704, MPFR_RNDN);
        mpfr_div(r57706, r57700, r57705, MPFR_RNDN);
        mpfr_mul(r57707, r57697, r57706, MPFR_RNDN);
        return mpfr_get_d(r57707, MPFR_RNDN);
}

