#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.Integration.TanhSinh:nonNegative from integration-0.2.1";

double f_if(float x) {
        float r43010 = x;
        float r43011 = 1.0f;
        float r43012 = r43011 - r43010;
        float r43013 = r43010 / r43012;
        return r43013;
}

double f_id(double x) {
        double r43014 = x;
        double r43015 = 1.0;
        double r43016 = r43015 - r43014;
        double r43017 = r43014 / r43016;
        return r43017;
}


double f_of(float x) {
        float r43018 = x;
        float r43019 = 1.0f;
        float r43020 = r43019 - r43018;
        float r43021 = r43018 / r43020;
        return r43021;
}

double f_od(double x) {
        double r43022 = x;
        double r43023 = 1.0;
        double r43024 = r43023 - r43022;
        double r43025 = r43022 / r43024;
        return r43025;
}

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 r43026, r43027, r43028, r43029;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r43026);
        mpfr_init_set_str(r43027, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43028);
        mpfr_init(r43029);
}

double f_im(double x) {
        mpfr_set_d(r43026, x, MPFR_RNDN);
        ;
        mpfr_sub(r43028, r43027, r43026, MPFR_RNDN);
        mpfr_div(r43029, r43026, r43028, MPFR_RNDN);
        return mpfr_get_d(r43029, MPFR_RNDN);
}

static mpfr_t r43030, r43031, r43032, r43033;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r43030);
        mpfr_init_set_str(r43031, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43032);
        mpfr_init(r43033);
}

double f_fm(double x) {
        mpfr_set_d(r43030, x, MPFR_RNDN);
        ;
        mpfr_sub(r43032, r43031, r43030, MPFR_RNDN);
        mpfr_div(r43033, r43030, r43032, MPFR_RNDN);
        return mpfr_get_d(r43033, MPFR_RNDN);
}

static mpfr_t r43034, r43035, r43036, r43037;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r43034);
        mpfr_init_set_str(r43035, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43036);
        mpfr_init(r43037);
}

double f_dm(double x) {
        mpfr_set_d(r43034, x, MPFR_RNDN);
        ;
        mpfr_sub(r43036, r43035, r43034, MPFR_RNDN);
        mpfr_div(r43037, r43034, r43036, MPFR_RNDN);
        return mpfr_get_d(r43037, MPFR_RNDN);
}

