#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 r43371 = x;
        float r43372 = 1.0;
        float r43373 = y;
        float r43374 = r43371 * r43373;
        float r43375 = r43372 - r43374;
        float r43376 = r43371 * r43375;
        return r43376;
}

double f_id(double x, double y) {
        double r43377 = x;
        double r43378 = 1.0;
        double r43379 = y;
        double r43380 = r43377 * r43379;
        double r43381 = r43378 - r43380;
        double r43382 = r43377 * r43381;
        return r43382;
}


double f_of(float x, float y) {
        float r43383 = x;
        float r43384 = 1.0;
        float r43385 = y;
        float r43386 = r43383 * r43385;
        float r43387 = r43384 - r43386;
        float r43388 = r43383 * r43387;
        return r43388;
}

double f_od(double x, double y) {
        double r43389 = x;
        double r43390 = 1.0;
        double r43391 = y;
        double r43392 = r43389 * r43391;
        double r43393 = r43390 - r43392;
        double r43394 = r43389 * r43393;
        return r43394;
}

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 r43395, r43396, r43397, r43398, r43399, r43400;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r43395);
        mpfr_init_set_str(r43396, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43397);
        mpfr_init(r43398);
        mpfr_init(r43399);
        mpfr_init(r43400);
}

double f_im(double x, double y) {
        mpfr_set_d(r43395, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43397, y, MPFR_RNDN);
        mpfr_mul(r43398, r43395, r43397, MPFR_RNDN);
        mpfr_sub(r43399, r43396, r43398, MPFR_RNDN);
        mpfr_mul(r43400, r43395, r43399, MPFR_RNDN);
        return mpfr_get_d(r43400, MPFR_RNDN);
}

static mpfr_t r43401, r43402, r43403, r43404, r43405, r43406;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43401);
        mpfr_init_set_str(r43402, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43403);
        mpfr_init(r43404);
        mpfr_init(r43405);
        mpfr_init(r43406);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43401, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43403, y, MPFR_RNDN);
        mpfr_mul(r43404, r43401, r43403, MPFR_RNDN);
        mpfr_sub(r43405, r43402, r43404, MPFR_RNDN);
        mpfr_mul(r43406, r43401, r43405, MPFR_RNDN);
        return mpfr_get_d(r43406, MPFR_RNDN);
}

static mpfr_t r43407, r43408, r43409, r43410, r43411, r43412;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43407);
        mpfr_init_set_str(r43408, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43409);
        mpfr_init(r43410);
        mpfr_init(r43411);
        mpfr_init(r43412);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43407, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43409, y, MPFR_RNDN);
        mpfr_mul(r43410, r43407, r43409, MPFR_RNDN);
        mpfr_sub(r43411, r43408, r43410, MPFR_RNDN);
        mpfr_mul(r43412, r43407, r43411, MPFR_RNDN);
        return mpfr_get_d(r43412, MPFR_RNDN);
}

