#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 r50603 = x;
        float r50604 = y;
        float r50605 = sin(r50604);
        float r50606 = r50603 + r50605;
        float r50607 = z;
        float r50608 = cos(r50604);
        float r50609 = r50607 * r50608;
        float r50610 = r50606 + r50609;
        return r50610;
}

double f_id(double x, double y, double z) {
        double r50611 = x;
        double r50612 = y;
        double r50613 = sin(r50612);
        double r50614 = r50611 + r50613;
        double r50615 = z;
        double r50616 = cos(r50612);
        double r50617 = r50615 * r50616;
        double r50618 = r50614 + r50617;
        return r50618;
}


double f_of(float x, float y, float z) {
        float r50619 = x;
        float r50620 = y;
        float r50621 = sin(r50620);
        float r50622 = r50619 + r50621;
        float r50623 = z;
        float r50624 = cos(r50620);
        float r50625 = r50623 * r50624;
        float r50626 = r50622 + r50625;
        return r50626;
}

double f_od(double x, double y, double z) {
        double r50627 = x;
        double r50628 = y;
        double r50629 = sin(r50628);
        double r50630 = r50627 + r50629;
        double r50631 = z;
        double r50632 = cos(r50628);
        double r50633 = r50631 * r50632;
        double r50634 = r50630 + r50633;
        return r50634;
}

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 r50635, r50636, r50637, r50638, r50639, r50640, r50641, r50642;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50635);
        mpfr_init(r50636);
        mpfr_init(r50637);
        mpfr_init(r50638);
        mpfr_init(r50639);
        mpfr_init(r50640);
        mpfr_init(r50641);
        mpfr_init(r50642);
}

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

static mpfr_t r50643, r50644, r50645, r50646, r50647, r50648, r50649, r50650;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50643);
        mpfr_init(r50644);
        mpfr_init(r50645);
        mpfr_init(r50646);
        mpfr_init(r50647);
        mpfr_init(r50648);
        mpfr_init(r50649);
        mpfr_init(r50650);
}

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

static mpfr_t r50651, r50652, r50653, r50654, r50655, r50656, r50657, r50658;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50651);
        mpfr_init(r50652);
        mpfr_init(r50653);
        mpfr_init(r50654);
        mpfr_init(r50655);
        mpfr_init(r50656);
        mpfr_init(r50657);
        mpfr_init(r50658);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50651, x, MPFR_RNDN);
        mpfr_set_d(r50652, y, MPFR_RNDN);
        mpfr_sin(r50653, r50652, MPFR_RNDN);
        mpfr_add(r50654, r50651, r50653, MPFR_RNDN);
        mpfr_set_d(r50655, z, MPFR_RNDN);
        mpfr_cos(r50656, r50652, MPFR_RNDN);
        mpfr_mul(r50657, r50655, r50656, MPFR_RNDN);
        mpfr_add(r50658, r50654, r50657, MPFR_RNDN);
        return mpfr_get_d(r50658, MPFR_RNDN);
}

