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

char *name = "Graphics.Rasterific.Svg.PathConverter:segmentToBezier from rasterific-svg-0.2.3.1, A";

double f_if(float x) {
        float r50621 = 8.0;
        float r50622 = 3.0;
        float r50623 = r50621 / r50622;
        float r50624 = x;
        float r50625 = 0.5;
        float r50626 = r50624 * r50625;
        float r50627 = sin(r50626);
        float r50628 = r50623 * r50627;
        float r50629 = r50628 * r50627;
        float r50630 = sin(r50624);
        float r50631 = r50629 / r50630;
        return r50631;
}

double f_id(double x) {
        double r50632 = 8.0;
        double r50633 = 3.0;
        double r50634 = r50632 / r50633;
        double r50635 = x;
        double r50636 = 0.5;
        double r50637 = r50635 * r50636;
        double r50638 = sin(r50637);
        double r50639 = r50634 * r50638;
        double r50640 = r50639 * r50638;
        double r50641 = sin(r50635);
        double r50642 = r50640 / r50641;
        return r50642;
}


double f_of(float x) {
        float r50643 = x;
        float r50644 = 0.5;
        float r50645 = r50643 * r50644;
        float r50646 = sin(r50645);
        float r50647 = 3.0;
        float r50648 = 8.0;
        float r50649 = r50647 / r50648;
        float r50650 = r50646 / r50649;
        float r50651 = sin(r50643);
        float r50652 = r50646 / r50651;
        float r50653 = r50650 * r50652;
        return r50653;
}

double f_od(double x) {
        double r50654 = x;
        double r50655 = 0.5;
        double r50656 = r50654 * r50655;
        double r50657 = sin(r50656);
        double r50658 = 3.0;
        double r50659 = 8.0;
        double r50660 = r50658 / r50659;
        double r50661 = r50657 / r50660;
        double r50662 = sin(r50654);
        double r50663 = r50657 / r50662;
        double r50664 = r50661 * r50663;
        return r50664;
}

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 r50665, r50666, r50667, r50668, r50669, r50670, r50671, r50672, r50673, r50674, r50675;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r50665, "8.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r50666, "3.0", 10, MPFR_RNDN);
        mpfr_init(r50667);
        mpfr_init(r50668);
        mpfr_init_set_str(r50669, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50670);
        mpfr_init(r50671);
        mpfr_init(r50672);
        mpfr_init(r50673);
        mpfr_init(r50674);
        mpfr_init(r50675);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r50667, r50665, r50666, MPFR_RNDN);
        mpfr_set_d(r50668, x, MPFR_RNDN);
        ;
        mpfr_mul(r50670, r50668, r50669, MPFR_RNDN);
        mpfr_sin(r50671, r50670, MPFR_RNDN);
        mpfr_mul(r50672, r50667, r50671, MPFR_RNDN);
        mpfr_mul(r50673, r50672, r50671, MPFR_RNDN);
        mpfr_sin(r50674, r50668, MPFR_RNDN);
        mpfr_div(r50675, r50673, r50674, MPFR_RNDN);
        return mpfr_get_d(r50675, MPFR_RNDN);
}

static mpfr_t r50676, r50677, r50678, r50679, r50680, r50681, r50682, r50683, r50684, r50685, r50686;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50676);
        mpfr_init_set_str(r50677, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50678);
        mpfr_init(r50679);
        mpfr_init_set_str(r50680, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r50681, "8.0", 10, MPFR_RNDN);
        mpfr_init(r50682);
        mpfr_init(r50683);
        mpfr_init(r50684);
        mpfr_init(r50685);
        mpfr_init(r50686);
}

double f_fm(double x) {
        mpfr_set_d(r50676, x, MPFR_RNDN);
        ;
        mpfr_mul(r50678, r50676, r50677, MPFR_RNDN);
        mpfr_sin(r50679, r50678, MPFR_RNDN);
        ;
        ;
        mpfr_div(r50682, r50680, r50681, MPFR_RNDN);
        mpfr_div(r50683, r50679, r50682, MPFR_RNDN);
        mpfr_sin(r50684, r50676, MPFR_RNDN);
        mpfr_div(r50685, r50679, r50684, MPFR_RNDN);
        mpfr_mul(r50686, r50683, r50685, MPFR_RNDN);
        return mpfr_get_d(r50686, MPFR_RNDN);
}

static mpfr_t r50687, r50688, r50689, r50690, r50691, r50692, r50693, r50694, r50695, r50696, r50697;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50687);
        mpfr_init_set_str(r50688, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50689);
        mpfr_init(r50690);
        mpfr_init_set_str(r50691, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r50692, "8.0", 10, MPFR_RNDN);
        mpfr_init(r50693);
        mpfr_init(r50694);
        mpfr_init(r50695);
        mpfr_init(r50696);
        mpfr_init(r50697);
}

double f_dm(double x) {
        mpfr_set_d(r50687, x, MPFR_RNDN);
        ;
        mpfr_mul(r50689, r50687, r50688, MPFR_RNDN);
        mpfr_sin(r50690, r50689, MPFR_RNDN);
        ;
        ;
        mpfr_div(r50693, r50691, r50692, MPFR_RNDN);
        mpfr_div(r50694, r50690, r50693, MPFR_RNDN);
        mpfr_sin(r50695, r50687, MPFR_RNDN);
        mpfr_div(r50696, r50690, r50695, MPFR_RNDN);
        mpfr_mul(r50697, r50694, r50696, MPFR_RNDN);
        return mpfr_get_d(r50697, MPFR_RNDN);
}

