#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 r43329 = x;
        float r43330 = 1.0;
        float r43331 = 0.5;
        float r43332 = r43329 * r43331;
        float r43333 = r43330 - r43332;
        float r43334 = r43329 * r43333;
        return r43334;
}

double f_id(double x) {
        double r43335 = x;
        double r43336 = 1.0;
        double r43337 = 0.5;
        double r43338 = r43335 * r43337;
        double r43339 = r43336 - r43338;
        double r43340 = r43335 * r43339;
        return r43340;
}


double f_of(float x) {
        float r43341 = x;
        float r43342 = 1.0;
        float r43343 = 0.5;
        float r43344 = r43341 * r43343;
        float r43345 = r43342 - r43344;
        float r43346 = r43341 * r43345;
        return r43346;
}

double f_od(double x) {
        double r43347 = x;
        double r43348 = 1.0;
        double r43349 = 0.5;
        double r43350 = r43347 * r43349;
        double r43351 = r43348 - r43350;
        double r43352 = r43347 * r43351;
        return r43352;
}

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 r43353, r43354, r43355, r43356, r43357, r43358;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r43353);
        mpfr_init_set_str(r43354, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43355, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43356);
        mpfr_init(r43357);
        mpfr_init(r43358);
}

double f_im(double x) {
        mpfr_set_d(r43353, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43356, r43353, r43355, MPFR_RNDN);
        mpfr_sub(r43357, r43354, r43356, MPFR_RNDN);
        mpfr_mul(r43358, r43353, r43357, MPFR_RNDN);
        return mpfr_get_d(r43358, MPFR_RNDN);
}

static mpfr_t r43359, r43360, r43361, r43362, r43363, r43364;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43359);
        mpfr_init_set_str(r43360, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43361, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43362);
        mpfr_init(r43363);
        mpfr_init(r43364);
}

double f_fm(double x) {
        mpfr_set_d(r43359, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43362, r43359, r43361, MPFR_RNDN);
        mpfr_sub(r43363, r43360, r43362, MPFR_RNDN);
        mpfr_mul(r43364, r43359, r43363, MPFR_RNDN);
        return mpfr_get_d(r43364, MPFR_RNDN);
}

static mpfr_t r43365, r43366, r43367, r43368, r43369, r43370;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43365);
        mpfr_init_set_str(r43366, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43367, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43368);
        mpfr_init(r43369);
        mpfr_init(r43370);
}

double f_dm(double x) {
        mpfr_set_d(r43365, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43368, r43365, r43367, MPFR_RNDN);
        mpfr_sub(r43369, r43366, r43368, MPFR_RNDN);
        mpfr_mul(r43370, r43365, r43369, MPFR_RNDN);
        return mpfr_get_d(r43370, MPFR_RNDN);
}

