#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 r43484 = x;
        float r43485 = 1.0;
        float r43486 = y;
        float r43487 = r43484 * r43486;
        float r43488 = r43485 - r43487;
        float r43489 = r43484 * r43488;
        return r43489;
}

double f_id(double x, double y) {
        double r43490 = x;
        double r43491 = 1.0;
        double r43492 = y;
        double r43493 = r43490 * r43492;
        double r43494 = r43491 - r43493;
        double r43495 = r43490 * r43494;
        return r43495;
}


double f_of(float x, float y) {
        float r43496 = x;
        float r43497 = 1.0;
        float r43498 = y;
        float r43499 = r43496 * r43498;
        float r43500 = r43497 - r43499;
        float r43501 = r43496 * r43500;
        return r43501;
}

double f_od(double x, double y) {
        double r43502 = x;
        double r43503 = 1.0;
        double r43504 = y;
        double r43505 = r43502 * r43504;
        double r43506 = r43503 - r43505;
        double r43507 = r43502 * r43506;
        return r43507;
}

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 r43508, r43509, r43510, r43511, r43512, r43513;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r43508);
        mpfr_init_set_str(r43509, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43510);
        mpfr_init(r43511);
        mpfr_init(r43512);
        mpfr_init(r43513);
}

double f_im(double x, double y) {
        mpfr_set_d(r43508, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43510, y, MPFR_RNDN);
        mpfr_mul(r43511, r43508, r43510, MPFR_RNDN);
        mpfr_sub(r43512, r43509, r43511, MPFR_RNDN);
        mpfr_mul(r43513, r43508, r43512, MPFR_RNDN);
        return mpfr_get_d(r43513, MPFR_RNDN);
}

static mpfr_t r43514, r43515, r43516, r43517, r43518, r43519;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43514);
        mpfr_init_set_str(r43515, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43516);
        mpfr_init(r43517);
        mpfr_init(r43518);
        mpfr_init(r43519);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43514, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43516, y, MPFR_RNDN);
        mpfr_mul(r43517, r43514, r43516, MPFR_RNDN);
        mpfr_sub(r43518, r43515, r43517, MPFR_RNDN);
        mpfr_mul(r43519, r43514, r43518, MPFR_RNDN);
        return mpfr_get_d(r43519, MPFR_RNDN);
}

static mpfr_t r43520, r43521, r43522, r43523, r43524, r43525;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43520);
        mpfr_init_set_str(r43521, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43522);
        mpfr_init(r43523);
        mpfr_init(r43524);
        mpfr_init(r43525);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43520, x, MPFR_RNDN);
        ;
        mpfr_set_d(r43522, y, MPFR_RNDN);
        mpfr_mul(r43523, r43520, r43522, MPFR_RNDN);
        mpfr_sub(r43524, r43521, r43523, MPFR_RNDN);
        mpfr_mul(r43525, r43520, r43524, MPFR_RNDN);
        return mpfr_get_d(r43525, MPFR_RNDN);
}

