#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.TwoD.Arc:bezierFromSweepQ1 from diagrams-lib-1.3.0.3";

double f_if(float x, float y) {
        float r50060 = 1.0f;
        float r50061 = x;
        float r50062 = r50060 - r50061;
        float r50063 = 3.0f;
        float r50064 = r50063 - r50061;
        float r50065 = r50062 * r50064;
        float r50066 = y;
        float r50067 = r50066 * r50063;
        float r50068 = r50065 / r50067;
        return r50068;
}

double f_id(double x, double y) {
        double r50069 = 1.0;
        double r50070 = x;
        double r50071 = r50069 - r50070;
        double r50072 = 3.0;
        double r50073 = r50072 - r50070;
        double r50074 = r50071 * r50073;
        double r50075 = y;
        double r50076 = r50075 * r50072;
        double r50077 = r50074 / r50076;
        return r50077;
}


double f_of(float x, float y) {
        float r50078 = 1.0f;
        float r50079 = x;
        float r50080 = r50078 - r50079;
        float r50081 = y;
        float r50082 = r50080 / r50081;
        float r50083 = 3.0f;
        float r50084 = r50083 - r50079;
        float r50085 = r50084 / r50083;
        float r50086 = r50082 * r50085;
        return r50086;
}

double f_od(double x, double y) {
        double r50087 = 1.0;
        double r50088 = x;
        double r50089 = r50087 - r50088;
        double r50090 = y;
        double r50091 = r50089 / r50090;
        double r50092 = 3.0;
        double r50093 = r50092 - r50088;
        double r50094 = r50093 / r50092;
        double r50095 = r50091 * r50094;
        return r50095;
}

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 r50096, r50097, r50098, r50099, r50100, r50101, r50102, r50103, r50104;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50096, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50097);
        mpfr_init(r50098);
        mpfr_init_set_str(r50099, "3.0", 10, MPFR_RNDN);
        mpfr_init(r50100);
        mpfr_init(r50101);
        mpfr_init(r50102);
        mpfr_init(r50103);
        mpfr_init(r50104);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r50097, x, MPFR_RNDN);
        mpfr_sub(r50098, r50096, r50097, MPFR_RNDN);
        ;
        mpfr_sub(r50100, r50099, r50097, MPFR_RNDN);
        mpfr_mul(r50101, r50098, r50100, MPFR_RNDN);
        mpfr_set_d(r50102, y, MPFR_RNDN);
        mpfr_mul(r50103, r50102, r50099, MPFR_RNDN);
        mpfr_div(r50104, r50101, r50103, MPFR_RNDN);
        return mpfr_get_d(r50104, MPFR_RNDN);
}

static mpfr_t r50105, r50106, r50107, r50108, r50109, r50110, r50111, r50112, r50113;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50105, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50106);
        mpfr_init(r50107);
        mpfr_init(r50108);
        mpfr_init(r50109);
        mpfr_init_set_str(r50110, "3.0", 10, MPFR_RNDN);
        mpfr_init(r50111);
        mpfr_init(r50112);
        mpfr_init(r50113);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r50106, x, MPFR_RNDN);
        mpfr_sub(r50107, r50105, r50106, MPFR_RNDN);
        mpfr_set_d(r50108, y, MPFR_RNDN);
        mpfr_div(r50109, r50107, r50108, MPFR_RNDN);
        ;
        mpfr_sub(r50111, r50110, r50106, MPFR_RNDN);
        mpfr_div(r50112, r50111, r50110, MPFR_RNDN);
        mpfr_mul(r50113, r50109, r50112, MPFR_RNDN);
        return mpfr_get_d(r50113, MPFR_RNDN);
}

static mpfr_t r50114, r50115, r50116, r50117, r50118, r50119, r50120, r50121, r50122;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50114, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50115);
        mpfr_init(r50116);
        mpfr_init(r50117);
        mpfr_init(r50118);
        mpfr_init_set_str(r50119, "3.0", 10, MPFR_RNDN);
        mpfr_init(r50120);
        mpfr_init(r50121);
        mpfr_init(r50122);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r50115, x, MPFR_RNDN);
        mpfr_sub(r50116, r50114, r50115, MPFR_RNDN);
        mpfr_set_d(r50117, y, MPFR_RNDN);
        mpfr_div(r50118, r50116, r50117, MPFR_RNDN);
        ;
        mpfr_sub(r50120, r50119, r50115, MPFR_RNDN);
        mpfr_div(r50121, r50120, r50119, MPFR_RNDN);
        mpfr_mul(r50122, r50118, r50121, MPFR_RNDN);
        return mpfr_get_d(r50122, MPFR_RNDN);
}

