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

char *name = "Numeric.Log:$clog1p from log-domain-0.10.2.1, A";

double f_if(float x, float y) {
        float r42752 = x;
        float r42753 = 2.0f;
        float r42754 = r42752 * r42753;
        float r42755 = r42752 * r42752;
        float r42756 = r42754 + r42755;
        float r42757 = y;
        float r42758 = r42757 * r42757;
        float r42759 = r42756 + r42758;
        return r42759;
}

double f_id(double x, double y) {
        double r42760 = x;
        double r42761 = 2.0;
        double r42762 = r42760 * r42761;
        double r42763 = r42760 * r42760;
        double r42764 = r42762 + r42763;
        double r42765 = y;
        double r42766 = r42765 * r42765;
        double r42767 = r42764 + r42766;
        return r42767;
}


double f_of(float x, float y) {
        float r42768 = y;
        float r42769 = r42768 * r42768;
        float r42770 = x;
        float r42771 = 2.0f;
        float r42772 = r42770 + r42771;
        float r42773 = r42772 * r42770;
        float r42774 = r42769 + r42773;
        return r42774;
}

double f_od(double x, double y) {
        double r42775 = y;
        double r42776 = r42775 * r42775;
        double r42777 = x;
        double r42778 = 2.0;
        double r42779 = r42777 + r42778;
        double r42780 = r42779 * r42777;
        double r42781 = r42776 + r42780;
        return r42781;
}

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 r42782, r42783, r42784, r42785, r42786, r42787, r42788, r42789;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42782);
        mpfr_init_set_str(r42783, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42784);
        mpfr_init(r42785);
        mpfr_init(r42786);
        mpfr_init(r42787);
        mpfr_init(r42788);
        mpfr_init(r42789);
}

double f_im(double x, double y) {
        mpfr_set_d(r42782, x, MPFR_RNDN);
        ;
        mpfr_mul(r42784, r42782, r42783, MPFR_RNDN);
        mpfr_mul(r42785, r42782, r42782, MPFR_RNDN);
        mpfr_add(r42786, r42784, r42785, MPFR_RNDN);
        mpfr_set_d(r42787, y, MPFR_RNDN);
        mpfr_mul(r42788, r42787, r42787, MPFR_RNDN);
        mpfr_add(r42789, r42786, r42788, MPFR_RNDN);
        return mpfr_get_d(r42789, MPFR_RNDN);
}

static mpfr_t r42790, r42791, r42792, r42793, r42794, r42795, r42796;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42790);
        mpfr_init(r42791);
        mpfr_init(r42792);
        mpfr_init_set_str(r42793, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42794);
        mpfr_init(r42795);
        mpfr_init(r42796);
}

double f_fm(double x, double y) {
        mpfr_set_d(r42790, y, MPFR_RNDN);
        mpfr_sqr(r42791, r42790, MPFR_RNDN);
        mpfr_set_d(r42792, x, MPFR_RNDN);
        ;
        mpfr_add(r42794, r42792, r42793, MPFR_RNDN);
        mpfr_mul(r42795, r42794, r42792, MPFR_RNDN);
        mpfr_add(r42796, r42791, r42795, MPFR_RNDN);
        return mpfr_get_d(r42796, MPFR_RNDN);
}

static mpfr_t r42797, r42798, r42799, r42800, r42801, r42802, r42803;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42797);
        mpfr_init(r42798);
        mpfr_init(r42799);
        mpfr_init_set_str(r42800, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42801);
        mpfr_init(r42802);
        mpfr_init(r42803);
}

double f_dm(double x, double y) {
        mpfr_set_d(r42797, y, MPFR_RNDN);
        mpfr_sqr(r42798, r42797, MPFR_RNDN);
        mpfr_set_d(r42799, x, MPFR_RNDN);
        ;
        mpfr_add(r42801, r42799, r42800, MPFR_RNDN);
        mpfr_mul(r42802, r42801, r42799, MPFR_RNDN);
        mpfr_add(r42803, r42798, r42802, MPFR_RNDN);
        return mpfr_get_d(r42803, MPFR_RNDN);
}

