#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 r47974 = x;
        float r47975 = y;
        float r47976 = cos(r47975);
        float r47977 = r47974 + r47976;
        float r47978 = z;
        float r47979 = sin(r47975);
        float r47980 = r47978 * r47979;
        float r47981 = r47977 - r47980;
        return r47981;
}

double f_id(double x, double y, double z) {
        double r47982 = x;
        double r47983 = y;
        double r47984 = cos(r47983);
        double r47985 = r47982 + r47984;
        double r47986 = z;
        double r47987 = sin(r47983);
        double r47988 = r47986 * r47987;
        double r47989 = r47985 - r47988;
        return r47989;
}


double f_of(float x, float y, float z) {
        float r47990 = x;
        float r47991 = y;
        float r47992 = cos(r47991);
        float r47993 = r47990 + r47992;
        float r47994 = z;
        float r47995 = sin(r47991);
        float r47996 = r47994 * r47995;
        float r47997 = cbrt(r47996);
        float r47998 = r47997 * (r47997 * r47997);
        float r47999 = r47993 - r47998;
        return r47999;
}

double f_od(double x, double y, double z) {
        double r48000 = x;
        double r48001 = y;
        double r48002 = cos(r48001);
        double r48003 = r48000 + r48002;
        double r48004 = z;
        double r48005 = sin(r48001);
        double r48006 = r48004 * r48005;
        double r48007 = cbrt(r48006);
        double r48008 = r48007 * (r48007 * r48007);
        double r48009 = r48003 - r48008;
        return r48009;
}

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 r48010, r48011, r48012, r48013, r48014, r48015, r48016, r48017;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r48010);
        mpfr_init(r48011);
        mpfr_init(r48012);
        mpfr_init(r48013);
        mpfr_init(r48014);
        mpfr_init(r48015);
        mpfr_init(r48016);
        mpfr_init(r48017);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r48010, x, MPFR_RNDN);
        mpfr_set_d(r48011, y, MPFR_RNDN);
        mpfr_cos(r48012, r48011, MPFR_RNDN);
        mpfr_add(r48013, r48010, r48012, MPFR_RNDN);
        mpfr_set_d(r48014, z, MPFR_RNDN);
        mpfr_sin(r48015, r48011, MPFR_RNDN);
        mpfr_mul(r48016, r48014, r48015, MPFR_RNDN);
        mpfr_sub(r48017, r48013, r48016, MPFR_RNDN);
        return mpfr_get_d(r48017, MPFR_RNDN);
}

static mpfr_t r48018, r48019, r48020, r48021, r48022, r48023, r48024, r48025, r48026, r48027;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48018);
        mpfr_init(r48019);
        mpfr_init(r48020);
        mpfr_init(r48021);
        mpfr_init(r48022);
        mpfr_init(r48023);
        mpfr_init(r48024);
        mpfr_init(r48025);
        mpfr_init(r48026);
        mpfr_init(r48027);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r48018, x, MPFR_RNDN);
        mpfr_set_d(r48019, y, MPFR_RNDN);
        mpfr_cos(r48020, r48019, MPFR_RNDN);
        mpfr_add(r48021, r48018, r48020, MPFR_RNDN);
        mpfr_set_d(r48022, z, MPFR_RNDN);
        mpfr_sin(r48023, r48019, MPFR_RNDN);
        mpfr_mul(r48024, r48022, r48023, MPFR_RNDN);
        mpfr_cbrt(r48025, r48024, MPFR_RNDN);
        mpfr_mul(r48026, r48025, r48025, MPFR_RNDN); mpfr_mul(r48026, r48026, r48025, MPFR_RNDN);
        mpfr_sub(r48027, r48021, r48026, MPFR_RNDN);
        return mpfr_get_d(r48027, MPFR_RNDN);
}

static mpfr_t r48028, r48029, r48030, r48031, r48032, r48033, r48034, r48035, r48036, r48037;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48028);
        mpfr_init(r48029);
        mpfr_init(r48030);
        mpfr_init(r48031);
        mpfr_init(r48032);
        mpfr_init(r48033);
        mpfr_init(r48034);
        mpfr_init(r48035);
        mpfr_init(r48036);
        mpfr_init(r48037);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r48028, x, MPFR_RNDN);
        mpfr_set_d(r48029, y, MPFR_RNDN);
        mpfr_cos(r48030, r48029, MPFR_RNDN);
        mpfr_add(r48031, r48028, r48030, MPFR_RNDN);
        mpfr_set_d(r48032, z, MPFR_RNDN);
        mpfr_sin(r48033, r48029, MPFR_RNDN);
        mpfr_mul(r48034, r48032, r48033, MPFR_RNDN);
        mpfr_cbrt(r48035, r48034, MPFR_RNDN);
        mpfr_mul(r48036, r48035, r48035, MPFR_RNDN); mpfr_mul(r48036, r48036, r48035, MPFR_RNDN);
        mpfr_sub(r48037, r48031, r48036, MPFR_RNDN);
        return mpfr_get_d(r48037, MPFR_RNDN);
}

