#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, B";

double f_if(float x) {
        float r43442 = x;
        float r43443 = 1.0;
        float r43444 = 0.5;
        float r43445 = r43442 * r43444;
        float r43446 = r43443 - r43445;
        float r43447 = r43442 * r43446;
        return r43447;
}

double f_id(double x) {
        double r43448 = x;
        double r43449 = 1.0;
        double r43450 = 0.5;
        double r43451 = r43448 * r43450;
        double r43452 = r43449 - r43451;
        double r43453 = r43448 * r43452;
        return r43453;
}


double f_of(float x) {
        float r43454 = x;
        float r43455 = 1.0;
        float r43456 = 0.5;
        float r43457 = r43454 * r43456;
        float r43458 = r43455 - r43457;
        float r43459 = r43454 * r43458;
        return r43459;
}

double f_od(double x) {
        double r43460 = x;
        double r43461 = 1.0;
        double r43462 = 0.5;
        double r43463 = r43460 * r43462;
        double r43464 = r43461 - r43463;
        double r43465 = r43460 * r43464;
        return r43465;
}

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 r43466, r43467, r43468, r43469, r43470, r43471;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r43466);
        mpfr_init_set_str(r43467, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43468, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43469);
        mpfr_init(r43470);
        mpfr_init(r43471);
}

double f_im(double x) {
        mpfr_set_d(r43466, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43469, r43466, r43468, MPFR_RNDN);
        mpfr_sub(r43470, r43467, r43469, MPFR_RNDN);
        mpfr_mul(r43471, r43466, r43470, MPFR_RNDN);
        return mpfr_get_d(r43471, MPFR_RNDN);
}

static mpfr_t r43472, r43473, r43474, r43475, r43476, r43477;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43472);
        mpfr_init_set_str(r43473, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43474, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43475);
        mpfr_init(r43476);
        mpfr_init(r43477);
}

double f_fm(double x) {
        mpfr_set_d(r43472, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43475, r43472, r43474, MPFR_RNDN);
        mpfr_sub(r43476, r43473, r43475, MPFR_RNDN);
        mpfr_mul(r43477, r43472, r43476, MPFR_RNDN);
        return mpfr_get_d(r43477, MPFR_RNDN);
}

static mpfr_t r43478, r43479, r43480, r43481, r43482, r43483;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43478);
        mpfr_init_set_str(r43479, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43480, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43481);
        mpfr_init(r43482);
        mpfr_init(r43483);
}

double f_dm(double x) {
        mpfr_set_d(r43478, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43481, r43478, r43480, MPFR_RNDN);
        mpfr_sub(r43482, r43479, r43481, MPFR_RNDN);
        mpfr_mul(r43483, r43478, r43482, MPFR_RNDN);
        return mpfr_get_d(r43483, MPFR_RNDN);
}

