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

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

double f_if(float x, float y) {
        float r42804 = x;
        float r42805 = y;
        float r42806 = r42804 * r42805;
        float r42807 = r42806 + r42804;
        float r42808 = r42807 + r42805;
        return r42808;
}

double f_id(double x, double y) {
        double r42809 = x;
        double r42810 = y;
        double r42811 = r42809 * r42810;
        double r42812 = r42811 + r42809;
        double r42813 = r42812 + r42810;
        return r42813;
}


double f_of(float x, float y) {
        float r42814 = x;
        float r42815 = y;
        float r42816 = r42814 * r42815;
        float r42817 = r42816 + r42814;
        float r42818 = r42817 + r42815;
        return r42818;
}

double f_od(double x, double y) {
        double r42819 = x;
        double r42820 = y;
        double r42821 = r42819 * r42820;
        double r42822 = r42821 + r42819;
        double r42823 = r42822 + r42820;
        return r42823;
}

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 r42824, r42825, r42826, r42827, r42828;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42824);
        mpfr_init(r42825);
        mpfr_init(r42826);
        mpfr_init(r42827);
        mpfr_init(r42828);
}

double f_im(double x, double y) {
        mpfr_set_d(r42824, x, MPFR_RNDN);
        mpfr_set_d(r42825, y, MPFR_RNDN);
        mpfr_mul(r42826, r42824, r42825, MPFR_RNDN);
        mpfr_add(r42827, r42826, r42824, MPFR_RNDN);
        mpfr_add(r42828, r42827, r42825, MPFR_RNDN);
        return mpfr_get_d(r42828, MPFR_RNDN);
}

static mpfr_t r42829, r42830, r42831, r42832, r42833;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42829);
        mpfr_init(r42830);
        mpfr_init(r42831);
        mpfr_init(r42832);
        mpfr_init(r42833);
}

double f_fm(double x, double y) {
        mpfr_set_d(r42829, x, MPFR_RNDN);
        mpfr_set_d(r42830, y, MPFR_RNDN);
        mpfr_mul(r42831, r42829, r42830, MPFR_RNDN);
        mpfr_add(r42832, r42831, r42829, MPFR_RNDN);
        mpfr_add(r42833, r42832, r42830, MPFR_RNDN);
        return mpfr_get_d(r42833, MPFR_RNDN);
}

static mpfr_t r42834, r42835, r42836, r42837, r42838;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42834);
        mpfr_init(r42835);
        mpfr_init(r42836);
        mpfr_init(r42837);
        mpfr_init(r42838);
}

double f_dm(double x, double y) {
        mpfr_set_d(r42834, x, MPFR_RNDN);
        mpfr_set_d(r42835, y, MPFR_RNDN);
        mpfr_mul(r42836, r42834, r42835, MPFR_RNDN);
        mpfr_add(r42837, r42836, r42834, MPFR_RNDN);
        mpfr_add(r42838, r42837, r42835, MPFR_RNDN);
        return mpfr_get_d(r42838, MPFR_RNDN);
}

