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

char *name = "Numeric.SpecFunctions:log1p from math-functions-0.1.5.2, A";

double f_if(float x, float y) {
        float r39825 = x;
        float r39826 = 1.0f;
        float r39827 = y;
        float r39828 = r39825 * r39827;
        float r39829 = r39826 - r39828;
        float r39830 = r39825 * r39829;
        return r39830;
}

double f_id(double x, double y) {
        double r39831 = x;
        double r39832 = 1.0;
        double r39833 = y;
        double r39834 = r39831 * r39833;
        double r39835 = r39832 - r39834;
        double r39836 = r39831 * r39835;
        return r39836;
}


double f_of(float x, float y) {
        float r39837 = 1.0f;
        float r39838 = x;
        float r39839 = r39837 * r39838;
        float r39840 = y;
        float r39841 = r39838 * r39840;
        float r39842 = -r39841;
        float r39843 = r39842 * r39838;
        float r39844 = r39839 + r39843;
        return r39844;
}

double f_od(double x, double y) {
        double r39845 = 1.0;
        double r39846 = x;
        double r39847 = r39845 * r39846;
        double r39848 = y;
        double r39849 = r39846 * r39848;
        double r39850 = -r39849;
        double r39851 = r39850 * r39846;
        double r39852 = r39847 + r39851;
        return r39852;
}

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 r39853, r39854, r39855, r39856, r39857, r39858;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r39853);
        mpfr_init_set_str(r39854, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39855);
        mpfr_init(r39856);
        mpfr_init(r39857);
        mpfr_init(r39858);
}

double f_im(double x, double y) {
        mpfr_set_d(r39853, x, MPFR_RNDN);
        ;
        mpfr_set_d(r39855, y, MPFR_RNDN);
        mpfr_mul(r39856, r39853, r39855, MPFR_RNDN);
        mpfr_sub(r39857, r39854, r39856, MPFR_RNDN);
        mpfr_mul(r39858, r39853, r39857, MPFR_RNDN);
        return mpfr_get_d(r39858, MPFR_RNDN);
}

static mpfr_t r39859, r39860, r39861, r39862, r39863, r39864, r39865, r39866;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r39859, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39860);
        mpfr_init(r39861);
        mpfr_init(r39862);
        mpfr_init(r39863);
        mpfr_init(r39864);
        mpfr_init(r39865);
        mpfr_init(r39866);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r39860, x, MPFR_RNDN);
        mpfr_mul(r39861, r39859, r39860, MPFR_RNDN);
        mpfr_set_d(r39862, y, MPFR_RNDN);
        mpfr_mul(r39863, r39860, r39862, MPFR_RNDN);
        mpfr_neg(r39864, r39863, MPFR_RNDN);
        mpfr_mul(r39865, r39864, r39860, MPFR_RNDN);
        mpfr_add(r39866, r39861, r39865, MPFR_RNDN);
        return mpfr_get_d(r39866, MPFR_RNDN);
}

static mpfr_t r39867, r39868, r39869, r39870, r39871, r39872, r39873, r39874;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r39867, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39868);
        mpfr_init(r39869);
        mpfr_init(r39870);
        mpfr_init(r39871);
        mpfr_init(r39872);
        mpfr_init(r39873);
        mpfr_init(r39874);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r39868, x, MPFR_RNDN);
        mpfr_mul(r39869, r39867, r39868, MPFR_RNDN);
        mpfr_set_d(r39870, y, MPFR_RNDN);
        mpfr_mul(r39871, r39868, r39870, MPFR_RNDN);
        mpfr_neg(r39872, r39871, MPFR_RNDN);
        mpfr_mul(r39873, r39872, r39868, MPFR_RNDN);
        mpfr_add(r39874, r39869, r39873, MPFR_RNDN);
        return mpfr_get_d(r39874, MPFR_RNDN);
}

