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

double f_if(float x, float y, float z) {
        float r50659 = x;
        float r50660 = y;
        float r50661 = cos(r50660);
        float r50662 = r50659 + r50661;
        float r50663 = z;
        float r50664 = sin(r50660);
        float r50665 = r50663 * r50664;
        float r50666 = r50662 - r50665;
        return r50666;
}

double f_id(double x, double y, double z) {
        double r50667 = x;
        double r50668 = y;
        double r50669 = cos(r50668);
        double r50670 = r50667 + r50669;
        double r50671 = z;
        double r50672 = sin(r50668);
        double r50673 = r50671 * r50672;
        double r50674 = r50670 - r50673;
        return r50674;
}


double f_of(float x, float y, float z) {
        float r50675 = x;
        float r50676 = y;
        float r50677 = cos(r50676);
        float r50678 = r50675 + r50677;
        float r50679 = z;
        float r50680 = sin(r50676);
        float r50681 = r50679 * r50680;
        float r50682 = r50678 - r50681;
        return r50682;
}

double f_od(double x, double y, double z) {
        double r50683 = x;
        double r50684 = y;
        double r50685 = cos(r50684);
        double r50686 = r50683 + r50685;
        double r50687 = z;
        double r50688 = sin(r50684);
        double r50689 = r50687 * r50688;
        double r50690 = r50686 - r50689;
        return r50690;
}

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 r50691, r50692, r50693, r50694, r50695, r50696, r50697, r50698;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50691);
        mpfr_init(r50692);
        mpfr_init(r50693);
        mpfr_init(r50694);
        mpfr_init(r50695);
        mpfr_init(r50696);
        mpfr_init(r50697);
        mpfr_init(r50698);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50691, x, MPFR_RNDN);
        mpfr_set_d(r50692, y, MPFR_RNDN);
        mpfr_cos(r50693, r50692, MPFR_RNDN);
        mpfr_add(r50694, r50691, r50693, MPFR_RNDN);
        mpfr_set_d(r50695, z, MPFR_RNDN);
        mpfr_sin(r50696, r50692, MPFR_RNDN);
        mpfr_mul(r50697, r50695, r50696, MPFR_RNDN);
        mpfr_sub(r50698, r50694, r50697, MPFR_RNDN);
        return mpfr_get_d(r50698, MPFR_RNDN);
}

static mpfr_t r50699, r50700, r50701, r50702, r50703, r50704, r50705, r50706;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50699);
        mpfr_init(r50700);
        mpfr_init(r50701);
        mpfr_init(r50702);
        mpfr_init(r50703);
        mpfr_init(r50704);
        mpfr_init(r50705);
        mpfr_init(r50706);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50699, x, MPFR_RNDN);
        mpfr_set_d(r50700, y, MPFR_RNDN);
        mpfr_cos(r50701, r50700, MPFR_RNDN);
        mpfr_add(r50702, r50699, r50701, MPFR_RNDN);
        mpfr_set_d(r50703, z, MPFR_RNDN);
        mpfr_sin(r50704, r50700, MPFR_RNDN);
        mpfr_mul(r50705, r50703, r50704, MPFR_RNDN);
        mpfr_sub(r50706, r50702, r50705, MPFR_RNDN);
        return mpfr_get_d(r50706, MPFR_RNDN);
}

static mpfr_t r50707, r50708, r50709, r50710, r50711, r50712, r50713, r50714;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50707);
        mpfr_init(r50708);
        mpfr_init(r50709);
        mpfr_init(r50710);
        mpfr_init(r50711);
        mpfr_init(r50712);
        mpfr_init(r50713);
        mpfr_init(r50714);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50707, x, MPFR_RNDN);
        mpfr_set_d(r50708, y, MPFR_RNDN);
        mpfr_cos(r50709, r50708, MPFR_RNDN);
        mpfr_add(r50710, r50707, r50709, MPFR_RNDN);
        mpfr_set_d(r50711, z, MPFR_RNDN);
        mpfr_sin(r50712, r50708, MPFR_RNDN);
        mpfr_mul(r50713, r50711, r50712, MPFR_RNDN);
        mpfr_sub(r50714, r50710, r50713, MPFR_RNDN);
        return mpfr_get_d(r50714, MPFR_RNDN);
}

