#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 r50853 = x;
        float r50854 = y;
        float r50855 = cos(r50854);
        float r50856 = r50853 + r50855;
        float r50857 = z;
        float r50858 = sin(r50854);
        float r50859 = r50857 * r50858;
        float r50860 = r50856 - r50859;
        return r50860;
}

double f_id(double x, double y, double z) {
        double r50861 = x;
        double r50862 = y;
        double r50863 = cos(r50862);
        double r50864 = r50861 + r50863;
        double r50865 = z;
        double r50866 = sin(r50862);
        double r50867 = r50865 * r50866;
        double r50868 = r50864 - r50867;
        return r50868;
}


double f_of(float x, float y, float z) {
        float r50869 = x;
        float r50870 = y;
        float r50871 = cos(r50870);
        float r50872 = r50869 + r50871;
        float r50873 = z;
        float r50874 = sin(r50870);
        float r50875 = r50873 * r50874;
        float r50876 = r50872 - r50875;
        return r50876;
}

double f_od(double x, double y, double z) {
        double r50877 = x;
        double r50878 = y;
        double r50879 = cos(r50878);
        double r50880 = r50877 + r50879;
        double r50881 = z;
        double r50882 = sin(r50878);
        double r50883 = r50881 * r50882;
        double r50884 = r50880 - r50883;
        return r50884;
}

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 r50885, r50886, r50887, r50888, r50889, r50890, r50891, r50892;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50885);
        mpfr_init(r50886);
        mpfr_init(r50887);
        mpfr_init(r50888);
        mpfr_init(r50889);
        mpfr_init(r50890);
        mpfr_init(r50891);
        mpfr_init(r50892);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50885, x, MPFR_RNDN);
        mpfr_set_d(r50886, y, MPFR_RNDN);
        mpfr_cos(r50887, r50886, MPFR_RNDN);
        mpfr_add(r50888, r50885, r50887, MPFR_RNDN);
        mpfr_set_d(r50889, z, MPFR_RNDN);
        mpfr_sin(r50890, r50886, MPFR_RNDN);
        mpfr_mul(r50891, r50889, r50890, MPFR_RNDN);
        mpfr_sub(r50892, r50888, r50891, MPFR_RNDN);
        return mpfr_get_d(r50892, MPFR_RNDN);
}

static mpfr_t r50893, r50894, r50895, r50896, r50897, r50898, r50899, r50900;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50893);
        mpfr_init(r50894);
        mpfr_init(r50895);
        mpfr_init(r50896);
        mpfr_init(r50897);
        mpfr_init(r50898);
        mpfr_init(r50899);
        mpfr_init(r50900);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50893, x, MPFR_RNDN);
        mpfr_set_d(r50894, y, MPFR_RNDN);
        mpfr_cos(r50895, r50894, MPFR_RNDN);
        mpfr_add(r50896, r50893, r50895, MPFR_RNDN);
        mpfr_set_d(r50897, z, MPFR_RNDN);
        mpfr_sin(r50898, r50894, MPFR_RNDN);
        mpfr_mul(r50899, r50897, r50898, MPFR_RNDN);
        mpfr_sub(r50900, r50896, r50899, MPFR_RNDN);
        return mpfr_get_d(r50900, MPFR_RNDN);
}

static mpfr_t r50901, r50902, r50903, r50904, r50905, r50906, r50907, r50908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50901);
        mpfr_init(r50902);
        mpfr_init(r50903);
        mpfr_init(r50904);
        mpfr_init(r50905);
        mpfr_init(r50906);
        mpfr_init(r50907);
        mpfr_init(r50908);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50901, x, MPFR_RNDN);
        mpfr_set_d(r50902, y, MPFR_RNDN);
        mpfr_cos(r50903, r50902, MPFR_RNDN);
        mpfr_add(r50904, r50901, r50903, MPFR_RNDN);
        mpfr_set_d(r50905, z, MPFR_RNDN);
        mpfr_sin(r50906, r50902, MPFR_RNDN);
        mpfr_mul(r50907, r50905, r50906, MPFR_RNDN);
        mpfr_sub(r50908, r50904, r50907, MPFR_RNDN);
        return mpfr_get_d(r50908, MPFR_RNDN);
}

