#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 r50797 = x;
        float r50798 = y;
        float r50799 = sin(r50798);
        float r50800 = r50797 + r50799;
        float r50801 = z;
        float r50802 = cos(r50798);
        float r50803 = r50801 * r50802;
        float r50804 = r50800 + r50803;
        return r50804;
}

double f_id(double x, double y, double z) {
        double r50805 = x;
        double r50806 = y;
        double r50807 = sin(r50806);
        double r50808 = r50805 + r50807;
        double r50809 = z;
        double r50810 = cos(r50806);
        double r50811 = r50809 * r50810;
        double r50812 = r50808 + r50811;
        return r50812;
}


double f_of(float x, float y, float z) {
        float r50813 = x;
        float r50814 = y;
        float r50815 = sin(r50814);
        float r50816 = r50813 + r50815;
        float r50817 = z;
        float r50818 = cos(r50814);
        float r50819 = r50817 * r50818;
        float r50820 = r50816 + r50819;
        return r50820;
}

double f_od(double x, double y, double z) {
        double r50821 = x;
        double r50822 = y;
        double r50823 = sin(r50822);
        double r50824 = r50821 + r50823;
        double r50825 = z;
        double r50826 = cos(r50822);
        double r50827 = r50825 * r50826;
        double r50828 = r50824 + r50827;
        return r50828;
}

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 r50829, r50830, r50831, r50832, r50833, r50834, r50835, r50836;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50829);
        mpfr_init(r50830);
        mpfr_init(r50831);
        mpfr_init(r50832);
        mpfr_init(r50833);
        mpfr_init(r50834);
        mpfr_init(r50835);
        mpfr_init(r50836);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50829, x, MPFR_RNDN);
        mpfr_set_d(r50830, y, MPFR_RNDN);
        mpfr_sin(r50831, r50830, MPFR_RNDN);
        mpfr_add(r50832, r50829, r50831, MPFR_RNDN);
        mpfr_set_d(r50833, z, MPFR_RNDN);
        mpfr_cos(r50834, r50830, MPFR_RNDN);
        mpfr_mul(r50835, r50833, r50834, MPFR_RNDN);
        mpfr_add(r50836, r50832, r50835, MPFR_RNDN);
        return mpfr_get_d(r50836, MPFR_RNDN);
}

static mpfr_t r50837, r50838, r50839, r50840, r50841, r50842, r50843, r50844;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50837);
        mpfr_init(r50838);
        mpfr_init(r50839);
        mpfr_init(r50840);
        mpfr_init(r50841);
        mpfr_init(r50842);
        mpfr_init(r50843);
        mpfr_init(r50844);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50837, x, MPFR_RNDN);
        mpfr_set_d(r50838, y, MPFR_RNDN);
        mpfr_sin(r50839, r50838, MPFR_RNDN);
        mpfr_add(r50840, r50837, r50839, MPFR_RNDN);
        mpfr_set_d(r50841, z, MPFR_RNDN);
        mpfr_cos(r50842, r50838, MPFR_RNDN);
        mpfr_mul(r50843, r50841, r50842, MPFR_RNDN);
        mpfr_add(r50844, r50840, r50843, MPFR_RNDN);
        return mpfr_get_d(r50844, MPFR_RNDN);
}

static mpfr_t r50845, r50846, r50847, r50848, r50849, r50850, r50851, r50852;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50845);
        mpfr_init(r50846);
        mpfr_init(r50847);
        mpfr_init(r50848);
        mpfr_init(r50849);
        mpfr_init(r50850);
        mpfr_init(r50851);
        mpfr_init(r50852);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50845, x, MPFR_RNDN);
        mpfr_set_d(r50846, y, MPFR_RNDN);
        mpfr_sin(r50847, r50846, MPFR_RNDN);
        mpfr_add(r50848, r50845, r50847, MPFR_RNDN);
        mpfr_set_d(r50849, z, MPFR_RNDN);
        mpfr_cos(r50850, r50846, MPFR_RNDN);
        mpfr_mul(r50851, r50849, r50850, MPFR_RNDN);
        mpfr_add(r50852, r50848, r50851, MPFR_RNDN);
        return mpfr_get_d(r50852, MPFR_RNDN);
}

