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

double f_if(float x) {
        float r51041 = 8.0;
        float r51042 = 3.0;
        float r51043 = r51041 / r51042;
        float r51044 = x;
        float r51045 = 0.5;
        float r51046 = r51044 * r51045;
        float r51047 = sin(r51046);
        float r51048 = r51043 * r51047;
        float r51049 = r51048 * r51047;
        float r51050 = sin(r51044);
        float r51051 = r51049 / r51050;
        return r51051;
}

double f_id(double x) {
        double r51052 = 8.0;
        double r51053 = 3.0;
        double r51054 = r51052 / r51053;
        double r51055 = x;
        double r51056 = 0.5;
        double r51057 = r51055 * r51056;
        double r51058 = sin(r51057);
        double r51059 = r51054 * r51058;
        double r51060 = r51059 * r51058;
        double r51061 = sin(r51055);
        double r51062 = r51060 / r51061;
        return r51062;
}


double f_of(float x) {
        float r51063 = x;
        float r51064 = 0.5;
        float r51065 = r51063 * r51064;
        float r51066 = sin(r51065);
        float r51067 = 3.0;
        float r51068 = 8.0;
        float r51069 = r51067 / r51068;
        float r51070 = r51066 / r51069;
        float r51071 = sin(r51063);
        float r51072 = r51066 / r51071;
        float r51073 = r51070 * r51072;
        return r51073;
}

double f_od(double x) {
        double r51074 = x;
        double r51075 = 0.5;
        double r51076 = r51074 * r51075;
        double r51077 = sin(r51076);
        double r51078 = 3.0;
        double r51079 = 8.0;
        double r51080 = r51078 / r51079;
        double r51081 = r51077 / r51080;
        double r51082 = sin(r51074);
        double r51083 = r51077 / r51082;
        double r51084 = r51081 * r51083;
        return r51084;
}

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 r51085, r51086, r51087, r51088, r51089, r51090, r51091, r51092, r51093, r51094, r51095;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51085, "8.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r51086, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51087);
        mpfr_init(r51088);
        mpfr_init_set_str(r51089, "0.5", 10, MPFR_RNDN);
        mpfr_init(r51090);
        mpfr_init(r51091);
        mpfr_init(r51092);
        mpfr_init(r51093);
        mpfr_init(r51094);
        mpfr_init(r51095);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r51087, r51085, r51086, MPFR_RNDN);
        mpfr_set_d(r51088, x, MPFR_RNDN);
        ;
        mpfr_mul(r51090, r51088, r51089, MPFR_RNDN);
        mpfr_sin(r51091, r51090, MPFR_RNDN);
        mpfr_mul(r51092, r51087, r51091, MPFR_RNDN);
        mpfr_mul(r51093, r51092, r51091, MPFR_RNDN);
        mpfr_sin(r51094, r51088, MPFR_RNDN);
        mpfr_div(r51095, r51093, r51094, MPFR_RNDN);
        return mpfr_get_d(r51095, MPFR_RNDN);
}

static mpfr_t r51096, r51097, r51098, r51099, r51100, r51101, r51102, r51103, r51104, r51105, r51106;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51096);
        mpfr_init_set_str(r51097, "0.5", 10, MPFR_RNDN);
        mpfr_init(r51098);
        mpfr_init(r51099);
        mpfr_init_set_str(r51100, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r51101, "8.0", 10, MPFR_RNDN);
        mpfr_init(r51102);
        mpfr_init(r51103);
        mpfr_init(r51104);
        mpfr_init(r51105);
        mpfr_init(r51106);
}

double f_fm(double x) {
        mpfr_set_d(r51096, x, MPFR_RNDN);
        ;
        mpfr_mul(r51098, r51096, r51097, MPFR_RNDN);
        mpfr_sin(r51099, r51098, MPFR_RNDN);
        ;
        ;
        mpfr_div(r51102, r51100, r51101, MPFR_RNDN);
        mpfr_div(r51103, r51099, r51102, MPFR_RNDN);
        mpfr_sin(r51104, r51096, MPFR_RNDN);
        mpfr_div(r51105, r51099, r51104, MPFR_RNDN);
        mpfr_mul(r51106, r51103, r51105, MPFR_RNDN);
        return mpfr_get_d(r51106, MPFR_RNDN);
}

static mpfr_t r51107, r51108, r51109, r51110, r51111, r51112, r51113, r51114, r51115, r51116, r51117;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51107);
        mpfr_init_set_str(r51108, "0.5", 10, MPFR_RNDN);
        mpfr_init(r51109);
        mpfr_init(r51110);
        mpfr_init_set_str(r51111, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r51112, "8.0", 10, MPFR_RNDN);
        mpfr_init(r51113);
        mpfr_init(r51114);
        mpfr_init(r51115);
        mpfr_init(r51116);
        mpfr_init(r51117);
}

double f_dm(double x) {
        mpfr_set_d(r51107, x, MPFR_RNDN);
        ;
        mpfr_mul(r51109, r51107, r51108, MPFR_RNDN);
        mpfr_sin(r51110, r51109, MPFR_RNDN);
        ;
        ;
        mpfr_div(r51113, r51111, r51112, MPFR_RNDN);
        mpfr_div(r51114, r51110, r51113, MPFR_RNDN);
        mpfr_sin(r51115, r51107, MPFR_RNDN);
        mpfr_div(r51116, r51110, r51115, MPFR_RNDN);
        mpfr_mul(r51117, r51114, r51116, MPFR_RNDN);
        return mpfr_get_d(r51117, MPFR_RNDN);
}

