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

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

double f_if(float x, float y) {
        float r46337 = x;
        float r46338 = y;
        float r46339 = r46338 + r46338;
        float r46340 = r46337 * r46339;
        return r46340;
}

double f_id(double x, double y) {
        double r46341 = x;
        double r46342 = y;
        double r46343 = r46342 + r46342;
        double r46344 = r46341 * r46343;
        return r46344;
}


double f_of(float x, float y) {
        float r46345 = x;
        float r46346 = y;
        float r46347 = r46346 + r46346;
        float r46348 = r46345 * r46347;
        return r46348;
}

double f_od(double x, double y) {
        double r46349 = x;
        double r46350 = y;
        double r46351 = r46350 + r46350;
        double r46352 = r46349 * r46351;
        return r46352;
}

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 r46353, r46354, r46355, r46356;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46353);
        mpfr_init(r46354);
        mpfr_init(r46355);
        mpfr_init(r46356);
}

double f_im(double x, double y) {
        mpfr_set_d(r46353, x, MPFR_RNDN);
        mpfr_set_d(r46354, y, MPFR_RNDN);
        mpfr_add(r46355, r46354, r46354, MPFR_RNDN);
        mpfr_mul(r46356, r46353, r46355, MPFR_RNDN);
        return mpfr_get_d(r46356, MPFR_RNDN);
}

static mpfr_t r46357, r46358, r46359, r46360;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46357);
        mpfr_init(r46358);
        mpfr_init(r46359);
        mpfr_init(r46360);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46357, x, MPFR_RNDN);
        mpfr_set_d(r46358, y, MPFR_RNDN);
        mpfr_add(r46359, r46358, r46358, MPFR_RNDN);
        mpfr_mul(r46360, r46357, r46359, MPFR_RNDN);
        return mpfr_get_d(r46360, MPFR_RNDN);
}

static mpfr_t r46361, r46362, r46363, r46364;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46361);
        mpfr_init(r46362);
        mpfr_init(r46363);
        mpfr_init(r46364);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46361, x, MPFR_RNDN);
        mpfr_set_d(r46362, y, MPFR_RNDN);
        mpfr_add(r46363, r46362, r46362, MPFR_RNDN);
        mpfr_mul(r46364, r46361, r46363, MPFR_RNDN);
        return mpfr_get_d(r46364, MPFR_RNDN);
}

