#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 r46066 = x;
        float r46067 = y;
        float r46068 = r46067 + r46067;
        float r46069 = r46066 * r46068;
        return r46069;
}

double f_id(double x, double y) {
        double r46070 = x;
        double r46071 = y;
        double r46072 = r46071 + r46071;
        double r46073 = r46070 * r46072;
        return r46073;
}


double f_of(float x, float y) {
        float r46074 = x;
        float r46075 = y;
        float r46076 = r46075 + r46075;
        float r46077 = r46074 * r46076;
        return r46077;
}

double f_od(double x, double y) {
        double r46078 = x;
        double r46079 = y;
        double r46080 = r46079 + r46079;
        double r46081 = r46078 * r46080;
        return r46081;
}

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 r46082, r46083, r46084, r46085;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46082);
        mpfr_init(r46083);
        mpfr_init(r46084);
        mpfr_init(r46085);
}

double f_im(double x, double y) {
        mpfr_set_d(r46082, x, MPFR_RNDN);
        mpfr_set_d(r46083, y, MPFR_RNDN);
        mpfr_add(r46084, r46083, r46083, MPFR_RNDN);
        mpfr_mul(r46085, r46082, r46084, MPFR_RNDN);
        return mpfr_get_d(r46085, MPFR_RNDN);
}

static mpfr_t r46086, r46087, r46088, r46089;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46086);
        mpfr_init(r46087);
        mpfr_init(r46088);
        mpfr_init(r46089);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46086, x, MPFR_RNDN);
        mpfr_set_d(r46087, y, MPFR_RNDN);
        mpfr_add(r46088, r46087, r46087, MPFR_RNDN);
        mpfr_mul(r46089, r46086, r46088, MPFR_RNDN);
        return mpfr_get_d(r46089, MPFR_RNDN);
}

static mpfr_t r46090, r46091, r46092, r46093;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46090);
        mpfr_init(r46091);
        mpfr_init(r46092);
        mpfr_init(r46093);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46090, x, MPFR_RNDN);
        mpfr_set_d(r46091, y, MPFR_RNDN);
        mpfr_add(r46092, r46091, r46091, MPFR_RNDN);
        mpfr_mul(r46093, r46090, r46092, MPFR_RNDN);
        return mpfr_get_d(r46093, MPFR_RNDN);
}

