#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 r43146 = x;
        float r43147 = 1.0;
        float r43148 = 0.5;
        float r43149 = r43146 * r43148;
        float r43150 = r43147 - r43149;
        float r43151 = r43146 * r43150;
        return r43151;
}

double f_id(double x) {
        double r43152 = x;
        double r43153 = 1.0;
        double r43154 = 0.5;
        double r43155 = r43152 * r43154;
        double r43156 = r43153 - r43155;
        double r43157 = r43152 * r43156;
        return r43157;
}


double f_of(float x) {
        float r43158 = x;
        float r43159 = 1.0;
        float r43160 = 0.5;
        float r43161 = r43158 * r43160;
        float r43162 = r43159 - r43161;
        float r43163 = r43158 * r43162;
        return r43163;
}

double f_od(double x) {
        double r43164 = x;
        double r43165 = 1.0;
        double r43166 = 0.5;
        double r43167 = r43164 * r43166;
        double r43168 = r43165 - r43167;
        double r43169 = r43164 * r43168;
        return r43169;
}

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 r43170, r43171, r43172, r43173, r43174, r43175;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r43170);
        mpfr_init_set_str(r43171, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43172, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43173);
        mpfr_init(r43174);
        mpfr_init(r43175);
}

double f_im(double x) {
        mpfr_set_d(r43170, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43173, r43170, r43172, MPFR_RNDN);
        mpfr_sub(r43174, r43171, r43173, MPFR_RNDN);
        mpfr_mul(r43175, r43170, r43174, MPFR_RNDN);
        return mpfr_get_d(r43175, MPFR_RNDN);
}

static mpfr_t r43176, r43177, r43178, r43179, r43180, r43181;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43176);
        mpfr_init_set_str(r43177, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43178, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43179);
        mpfr_init(r43180);
        mpfr_init(r43181);
}

double f_fm(double x) {
        mpfr_set_d(r43176, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43179, r43176, r43178, MPFR_RNDN);
        mpfr_sub(r43180, r43177, r43179, MPFR_RNDN);
        mpfr_mul(r43181, r43176, r43180, MPFR_RNDN);
        return mpfr_get_d(r43181, MPFR_RNDN);
}

static mpfr_t r43182, r43183, r43184, r43185, r43186, r43187;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r43182);
        mpfr_init_set_str(r43183, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43184, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43185);
        mpfr_init(r43186);
        mpfr_init(r43187);
}

double f_dm(double x) {
        mpfr_set_d(r43182, x, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r43185, r43182, r43184, MPFR_RNDN);
        mpfr_sub(r43186, r43183, r43185, MPFR_RNDN);
        mpfr_mul(r43187, r43182, r43186, MPFR_RNDN);
        return mpfr_get_d(r43187, MPFR_RNDN);
}

