#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 r57333 = 6.0f;
        float r57334 = x;
        float r57335 = 1.0f;
        float r57336 = r57334 - r57335;
        float r57337 = r57333 * r57336;
        float r57338 = r57334 + r57335;
        float r57339 = 4.0f;
        float r57340 = sqrt(r57334);
        float r57341 = r57339 * r57340;
        float r57342 = r57338 + r57341;
        float r57343 = r57337 / r57342;
        return r57343;
}

double f_id(double x) {
        double r57344 = 6.0;
        double r57345 = x;
        double r57346 = 1.0;
        double r57347 = r57345 - r57346;
        double r57348 = r57344 * r57347;
        double r57349 = r57345 + r57346;
        double r57350 = 4.0;
        double r57351 = sqrt(r57345);
        double r57352 = r57350 * r57351;
        double r57353 = r57349 + r57352;
        double r57354 = r57348 / r57353;
        return r57354;
}


double f_of(float x) {
        float r57355 = 6.0f;
        float r57356 = 1.0f;
        float r57357 = r57355 / r57356;
        float r57358 = x;
        float r57359 = 1.0f;
        float r57360 = r57358 - r57359;
        float r57361 = r57358 + r57359;
        float r57362 = 4.0f;
        float r57363 = sqrt(r57358);
        float r57364 = r57362 * r57363;
        float r57365 = r57361 + r57364;
        float r57366 = r57360 / r57365;
        float r57367 = exp(r57366);
        float r57368 = log(r57367);
        float r57369 = r57357 * r57368;
        return r57369;
}

double f_od(double x) {
        double r57370 = 6.0;
        double r57371 = 1.0;
        double r57372 = r57370 / r57371;
        double r57373 = x;
        double r57374 = 1.0;
        double r57375 = r57373 - r57374;
        double r57376 = r57373 + r57374;
        double r57377 = 4.0;
        double r57378 = sqrt(r57373);
        double r57379 = r57377 * r57378;
        double r57380 = r57376 + r57379;
        double r57381 = r57375 / r57380;
        double r57382 = exp(r57381);
        double r57383 = log(r57382);
        double r57384 = r57372 * r57383;
        return r57384;
}

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 r57385, r57386, r57387, r57388, r57389, r57390, r57391, r57392, r57393, r57394, r57395;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r57385, "6.0", 10, MPFR_RNDN);
        mpfr_init(r57386);
        mpfr_init_set_str(r57387, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57388);
        mpfr_init(r57389);
        mpfr_init(r57390);
        mpfr_init_set_str(r57391, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57392);
        mpfr_init(r57393);
        mpfr_init(r57394);
        mpfr_init(r57395);
}

double f_im(double x) {
        ;
        mpfr_set_d(r57386, x, MPFR_RNDN);
        ;
        mpfr_sub(r57388, r57386, r57387, MPFR_RNDN);
        mpfr_mul(r57389, r57385, r57388, MPFR_RNDN);
        mpfr_add(r57390, r57386, r57387, MPFR_RNDN);
        ;
        mpfr_sqrt(r57392, r57386, MPFR_RNDN);
        mpfr_mul(r57393, r57391, r57392, MPFR_RNDN);
        mpfr_add(r57394, r57390, r57393, MPFR_RNDN);
        mpfr_div(r57395, r57389, r57394, MPFR_RNDN);
        return mpfr_get_d(r57395, MPFR_RNDN);
}

static mpfr_t r57396, r57397, r57398, r57399, r57400, r57401, r57402, r57403, r57404, r57405, r57406, r57407, r57408, r57409, r57410;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r57396, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57397, "1", 10, MPFR_RNDN);
        mpfr_init(r57398);
        mpfr_init(r57399);
        mpfr_init_set_str(r57400, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57401);
        mpfr_init(r57402);
        mpfr_init_set_str(r57403, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57404);
        mpfr_init(r57405);
        mpfr_init(r57406);
        mpfr_init(r57407);
        mpfr_init(r57408);
        mpfr_init(r57409);
        mpfr_init(r57410);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r57398, r57396, r57397, MPFR_RNDN);
        mpfr_set_d(r57399, x, MPFR_RNDN);
        ;
        mpfr_sub(r57401, r57399, r57400, MPFR_RNDN);
        mpfr_add(r57402, r57399, r57400, MPFR_RNDN);
        ;
        mpfr_sqrt(r57404, r57399, MPFR_RNDN);
        mpfr_mul(r57405, r57403, r57404, MPFR_RNDN);
        mpfr_add(r57406, r57402, r57405, MPFR_RNDN);
        mpfr_div(r57407, r57401, r57406, MPFR_RNDN);
        mpfr_exp(r57408, r57407, MPFR_RNDN);
        mpfr_log(r57409, r57408, MPFR_RNDN);
        mpfr_mul(r57410, r57398, r57409, MPFR_RNDN);
        return mpfr_get_d(r57410, MPFR_RNDN);
}

static mpfr_t r57411, r57412, r57413, r57414, r57415, r57416, r57417, r57418, r57419, r57420, r57421, r57422, r57423, r57424, r57425;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r57411, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r57412, "1", 10, MPFR_RNDN);
        mpfr_init(r57413);
        mpfr_init(r57414);
        mpfr_init_set_str(r57415, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57416);
        mpfr_init(r57417);
        mpfr_init_set_str(r57418, "4.0", 10, MPFR_RNDN);
        mpfr_init(r57419);
        mpfr_init(r57420);
        mpfr_init(r57421);
        mpfr_init(r57422);
        mpfr_init(r57423);
        mpfr_init(r57424);
        mpfr_init(r57425);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r57413, r57411, r57412, MPFR_RNDN);
        mpfr_set_d(r57414, x, MPFR_RNDN);
        ;
        mpfr_sub(r57416, r57414, r57415, MPFR_RNDN);
        mpfr_add(r57417, r57414, r57415, MPFR_RNDN);
        ;
        mpfr_sqrt(r57419, r57414, MPFR_RNDN);
        mpfr_mul(r57420, r57418, r57419, MPFR_RNDN);
        mpfr_add(r57421, r57417, r57420, MPFR_RNDN);
        mpfr_div(r57422, r57416, r57421, MPFR_RNDN);
        mpfr_exp(r57423, r57422, MPFR_RNDN);
        mpfr_log(r57424, r57423, MPFR_RNDN);
        mpfr_mul(r57425, r57413, r57424, MPFR_RNDN);
        return mpfr_get_d(r57425, MPFR_RNDN);
}

