#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, C";

double f_if(float x, float y, float z) {
        float r50597 = x;
        float r50598 = y;
        float r50599 = sin(r50598);
        float r50600 = r50597 + r50599;
        float r50601 = z;
        float r50602 = cos(r50598);
        float r50603 = r50601 * r50602;
        float r50604 = r50600 + r50603;
        return r50604;
}

double f_id(double x, double y, double z) {
        double r50605 = x;
        double r50606 = y;
        double r50607 = sin(r50606);
        double r50608 = r50605 + r50607;
        double r50609 = z;
        double r50610 = cos(r50606);
        double r50611 = r50609 * r50610;
        double r50612 = r50608 + r50611;
        return r50612;
}


double f_of(float x, float y, float z) {
        float r50613 = x;
        float r50614 = y;
        float r50615 = sin(r50614);
        float r50616 = r50613 + r50615;
        float r50617 = z;
        float r50618 = cos(r50614);
        float r50619 = r50617 * r50618;
        float r50620 = r50616 + r50619;
        return r50620;
}

double f_od(double x, double y, double z) {
        double r50621 = x;
        double r50622 = y;
        double r50623 = sin(r50622);
        double r50624 = r50621 + r50623;
        double r50625 = z;
        double r50626 = cos(r50622);
        double r50627 = r50625 * r50626;
        double r50628 = r50624 + r50627;
        return r50628;
}

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 r50629, r50630, r50631, r50632, r50633, r50634, r50635, r50636;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50629);
        mpfr_init(r50630);
        mpfr_init(r50631);
        mpfr_init(r50632);
        mpfr_init(r50633);
        mpfr_init(r50634);
        mpfr_init(r50635);
        mpfr_init(r50636);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50629, x, MPFR_RNDN);
        mpfr_set_d(r50630, y, MPFR_RNDN);
        mpfr_sin(r50631, r50630, MPFR_RNDN);
        mpfr_add(r50632, r50629, r50631, MPFR_RNDN);
        mpfr_set_d(r50633, z, MPFR_RNDN);
        mpfr_cos(r50634, r50630, MPFR_RNDN);
        mpfr_mul(r50635, r50633, r50634, MPFR_RNDN);
        mpfr_add(r50636, r50632, r50635, MPFR_RNDN);
        return mpfr_get_d(r50636, MPFR_RNDN);
}

static mpfr_t r50637, r50638, r50639, r50640, r50641, r50642, r50643, r50644;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50637);
        mpfr_init(r50638);
        mpfr_init(r50639);
        mpfr_init(r50640);
        mpfr_init(r50641);
        mpfr_init(r50642);
        mpfr_init(r50643);
        mpfr_init(r50644);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50637, x, MPFR_RNDN);
        mpfr_set_d(r50638, y, MPFR_RNDN);
        mpfr_sin(r50639, r50638, MPFR_RNDN);
        mpfr_add(r50640, r50637, r50639, MPFR_RNDN);
        mpfr_set_d(r50641, z, MPFR_RNDN);
        mpfr_cos(r50642, r50638, MPFR_RNDN);
        mpfr_mul(r50643, r50641, r50642, MPFR_RNDN);
        mpfr_add(r50644, r50640, r50643, MPFR_RNDN);
        return mpfr_get_d(r50644, MPFR_RNDN);
}

static mpfr_t r50645, r50646, r50647, r50648, r50649, r50650, r50651, r50652;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50645);
        mpfr_init(r50646);
        mpfr_init(r50647);
        mpfr_init(r50648);
        mpfr_init(r50649);
        mpfr_init(r50650);
        mpfr_init(r50651);
        mpfr_init(r50652);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50645, x, MPFR_RNDN);
        mpfr_set_d(r50646, y, MPFR_RNDN);
        mpfr_sin(r50647, r50646, MPFR_RNDN);
        mpfr_add(r50648, r50645, r50647, MPFR_RNDN);
        mpfr_set_d(r50649, z, MPFR_RNDN);
        mpfr_cos(r50650, r50646, MPFR_RNDN);
        mpfr_mul(r50651, r50649, r50650, MPFR_RNDN);
        mpfr_add(r50652, r50648, r50651, MPFR_RNDN);
        return mpfr_get_d(r50652, MPFR_RNDN);
}

