#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 r43188 = x;
        float r43189 = 1.0;
        float r43190 = y;
        float r43191 = r43188 * r43190;
        float r43192 = r43189 - r43191;
        float r43193 = r43188 * r43192;
        return r43193;
}

double f_id(double x, double y) {
        double r43194 = x;
        double r43195 = 1.0;
        double r43196 = y;
        double r43197 = r43194 * r43196;
        double r43198 = r43195 - r43197;
        double r43199 = r43194 * r43198;
        return r43199;
}


double f_of(float x, float y) {
        float r43200 = x;
        float r43201 = 1.0;
        float r43202 = y;
        float r43203 = r43200 * r43202;
        float r43204 = r43201 - r43203;
        float r43205 = r43200 * r43204;
        return r43205;
}

double f_od(double x, double y) {
        double r43206 = x;
        double r43207 = 1.0;
        double r43208 = y;
        double r43209 = r43206 * r43208;
        double r43210 = r43207 - r43209;
        double r43211 = r43206 * r43210;
        return r43211;
}

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 r43212, r43213, r43214, r43215, r43216, r43217;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r43212);
        mpfr_init_set_str(r43213, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43214);
        mpfr_init(r43215);
        mpfr_init(r43216);
        mpfr_init(r43217);
}

double f_im(double x, double y) {
        mpfr_set_d(r43212, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43214, y, MPFR_RNDN);
        mpfr_mul(r43215, r43212, r43214, MPFR_RNDN);
        mpfr_sub(r43216, r43213, r43215, MPFR_RNDN);
        mpfr_mul(r43217, r43212, r43216, MPFR_RNDN);
        return mpfr_get_d(r43217, MPFR_RNDN);
}

static mpfr_t r43218, r43219, r43220, r43221, r43222, r43223;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43218);
        mpfr_init_set_str(r43219, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43220);
        mpfr_init(r43221);
        mpfr_init(r43222);
        mpfr_init(r43223);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43218, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43220, y, MPFR_RNDN);
        mpfr_mul(r43221, r43218, r43220, MPFR_RNDN);
        mpfr_sub(r43222, r43219, r43221, MPFR_RNDN);
        mpfr_mul(r43223, r43218, r43222, MPFR_RNDN);
        return mpfr_get_d(r43223, MPFR_RNDN);
}

static mpfr_t r43224, r43225, r43226, r43227, r43228, r43229;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43224);
        mpfr_init_set_str(r43225, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43226);
        mpfr_init(r43227);
        mpfr_init(r43228);
        mpfr_init(r43229);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43224, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43226, y, MPFR_RNDN);
        mpfr_mul(r43227, r43224, r43226, MPFR_RNDN);
        mpfr_sub(r43228, r43225, r43227, MPFR_RNDN);
        mpfr_mul(r43229, r43224, r43228, MPFR_RNDN);
        return mpfr_get_d(r43229, MPFR_RNDN);
}

