#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Graphics.Rasterific.CubicBezier:isSufficientlyFlat from Rasterific-0.6.1";

double f_if(float x) {
        float r32288 = x;
        float r32289 = 16.0;
        float r32290 = r32288 * r32289;
        float r32291 = r32290 * r32288;
        return r32291;
}

double f_id(double x) {
        double r32292 = x;
        double r32293 = 16.0;
        double r32294 = r32292 * r32293;
        double r32295 = r32294 * r32292;
        return r32295;
}


double f_of(float x) {
        float r32296 = x;
        float r32297 = 16.0;
        float r32298 = r32296 * r32297;
        float r32299 = r32298 * r32296;
        return r32299;
}

double f_od(double x) {
        double r32300 = x;
        double r32301 = 16.0;
        double r32302 = r32300 * r32301;
        double r32303 = r32302 * r32300;
        return r32303;
}

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 r32304, r32305, r32306, r32307;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r32304);
        mpfr_init_set_str(r32305, "16.0", 10, MPFR_RNDN);
        mpfr_init(r32306);
        mpfr_init(r32307);
}

double f_im(double x) {
        mpfr_set_d(r32304, x, MPFR_RNDN);
        ;
        mpfr_mul(r32306, r32304, r32305, MPFR_RNDN);
        mpfr_mul(r32307, r32306, r32304, MPFR_RNDN);
        return mpfr_get_d(r32307, MPFR_RNDN);
}

static mpfr_t r32308, r32309, r32310, r32311;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32308);
        mpfr_init_set_str(r32309, "16.0", 10, MPFR_RNDN);
        mpfr_init(r32310);
        mpfr_init(r32311);
}

double f_fm(double x) {
        mpfr_set_d(r32308, x, MPFR_RNDN);
        ;
        mpfr_mul(r32310, r32308, r32309, MPFR_RNDN);
        mpfr_mul(r32311, r32310, r32308, MPFR_RNDN);
        return mpfr_get_d(r32311, MPFR_RNDN);
}

static mpfr_t r32312, r32313, r32314, r32315;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32312);
        mpfr_init_set_str(r32313, "16.0", 10, MPFR_RNDN);
        mpfr_init(r32314);
        mpfr_init(r32315);
}

double f_dm(double x) {
        mpfr_set_d(r32312, x, MPFR_RNDN);
        ;
        mpfr_mul(r32314, r32312, r32313, MPFR_RNDN);
        mpfr_mul(r32315, r32314, r32312, MPFR_RNDN);
        return mpfr_get_d(r32315, MPFR_RNDN);
}

