#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 r50509 = x;
        float r50510 = y;
        float r50511 = sin(r50510);
        float r50512 = r50509 + r50511;
        float r50513 = z;
        float r50514 = cos(r50510);
        float r50515 = r50513 * r50514;
        float r50516 = r50512 + r50515;
        return r50516;
}

double f_id(double x, double y, double z) {
        double r50517 = x;
        double r50518 = y;
        double r50519 = sin(r50518);
        double r50520 = r50517 + r50519;
        double r50521 = z;
        double r50522 = cos(r50518);
        double r50523 = r50521 * r50522;
        double r50524 = r50520 + r50523;
        return r50524;
}


double f_of(float x, float y, float z) {
        float r50525 = x;
        float r50526 = y;
        float r50527 = sin(r50526);
        float r50528 = r50525 + r50527;
        float r50529 = z;
        float r50530 = cos(r50526);
        float r50531 = r50529 * r50530;
        float r50532 = r50528 + r50531;
        return r50532;
}

double f_od(double x, double y, double z) {
        double r50533 = x;
        double r50534 = y;
        double r50535 = sin(r50534);
        double r50536 = r50533 + r50535;
        double r50537 = z;
        double r50538 = cos(r50534);
        double r50539 = r50537 * r50538;
        double r50540 = r50536 + r50539;
        return r50540;
}

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 r50541, r50542, r50543, r50544, r50545, r50546, r50547, r50548;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50541);
        mpfr_init(r50542);
        mpfr_init(r50543);
        mpfr_init(r50544);
        mpfr_init(r50545);
        mpfr_init(r50546);
        mpfr_init(r50547);
        mpfr_init(r50548);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50541, x, MPFR_RNDN);
        mpfr_set_d(r50542, y, MPFR_RNDN);
        mpfr_sin(r50543, r50542, MPFR_RNDN);
        mpfr_add(r50544, r50541, r50543, MPFR_RNDN);
        mpfr_set_d(r50545, z, MPFR_RNDN);
        mpfr_cos(r50546, r50542, MPFR_RNDN);
        mpfr_mul(r50547, r50545, r50546, MPFR_RNDN);
        mpfr_add(r50548, r50544, r50547, MPFR_RNDN);
        return mpfr_get_d(r50548, MPFR_RNDN);
}

static mpfr_t r50549, r50550, r50551, r50552, r50553, r50554, r50555, r50556;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50549);
        mpfr_init(r50550);
        mpfr_init(r50551);
        mpfr_init(r50552);
        mpfr_init(r50553);
        mpfr_init(r50554);
        mpfr_init(r50555);
        mpfr_init(r50556);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50549, x, MPFR_RNDN);
        mpfr_set_d(r50550, y, MPFR_RNDN);
        mpfr_sin(r50551, r50550, MPFR_RNDN);
        mpfr_add(r50552, r50549, r50551, MPFR_RNDN);
        mpfr_set_d(r50553, z, MPFR_RNDN);
        mpfr_cos(r50554, r50550, MPFR_RNDN);
        mpfr_mul(r50555, r50553, r50554, MPFR_RNDN);
        mpfr_add(r50556, r50552, r50555, MPFR_RNDN);
        return mpfr_get_d(r50556, MPFR_RNDN);
}

static mpfr_t r50557, r50558, r50559, r50560, r50561, r50562, r50563, r50564;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50557);
        mpfr_init(r50558);
        mpfr_init(r50559);
        mpfr_init(r50560);
        mpfr_init(r50561);
        mpfr_init(r50562);
        mpfr_init(r50563);
        mpfr_init(r50564);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50557, x, MPFR_RNDN);
        mpfr_set_d(r50558, y, MPFR_RNDN);
        mpfr_sin(r50559, r50558, MPFR_RNDN);
        mpfr_add(r50560, r50557, r50559, MPFR_RNDN);
        mpfr_set_d(r50561, z, MPFR_RNDN);
        mpfr_cos(r50562, r50558, MPFR_RNDN);
        mpfr_mul(r50563, r50561, r50562, MPFR_RNDN);
        mpfr_add(r50564, r50560, r50563, MPFR_RNDN);
        return mpfr_get_d(r50564, MPFR_RNDN);
}

