#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 r32382 = x;
        float r32383 = 16.0;
        float r32384 = r32382 * r32383;
        float r32385 = r32384 * r32382;
        return r32385;
}

double f_id(double x) {
        double r32386 = x;
        double r32387 = 16.0;
        double r32388 = r32386 * r32387;
        double r32389 = r32388 * r32386;
        return r32389;
}


double f_of(float x) {
        float r32390 = x;
        float r32391 = 16.0;
        float r32392 = r32390 * r32391;
        float r32393 = r32392 * r32390;
        return r32393;
}

double f_od(double x) {
        double r32394 = x;
        double r32395 = 16.0;
        double r32396 = r32394 * r32395;
        double r32397 = r32396 * r32394;
        return r32397;
}

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 r32398, r32399, r32400, r32401;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r32398);
        mpfr_init_set_str(r32399, "16.0", 10, MPFR_RNDN);
        mpfr_init(r32400);
        mpfr_init(r32401);
}

double f_im(double x) {
        mpfr_set_d(r32398, x, MPFR_RNDN);
        ;
        mpfr_mul(r32400, r32398, r32399, MPFR_RNDN);
        mpfr_mul(r32401, r32400, r32398, MPFR_RNDN);
        return mpfr_get_d(r32401, MPFR_RNDN);
}

static mpfr_t r32402, r32403, r32404, r32405;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32402);
        mpfr_init_set_str(r32403, "16.0", 10, MPFR_RNDN);
        mpfr_init(r32404);
        mpfr_init(r32405);
}

double f_fm(double x) {
        mpfr_set_d(r32402, x, MPFR_RNDN);
        ;
        mpfr_mul(r32404, r32402, r32403, MPFR_RNDN);
        mpfr_mul(r32405, r32404, r32402, MPFR_RNDN);
        return mpfr_get_d(r32405, MPFR_RNDN);
}

static mpfr_t r32406, r32407, r32408, r32409;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32406);
        mpfr_init_set_str(r32407, "16.0", 10, MPFR_RNDN);
        mpfr_init(r32408);
        mpfr_init(r32409);
}

double f_dm(double x) {
        mpfr_set_d(r32406, x, MPFR_RNDN);
        ;
        mpfr_mul(r32408, r32406, r32407, MPFR_RNDN);
        mpfr_mul(r32409, r32408, r32406, MPFR_RNDN);
        return mpfr_get_d(r32409, MPFR_RNDN);
}

