#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 r51514 = 1.0;
        float r51515 = x;
        float r51516 = r51514 - r51515;
        float r51517 = 3.0;
        float r51518 = r51517 - r51515;
        float r51519 = r51516 * r51518;
        float r51520 = y;
        float r51521 = r51520 * r51517;
        float r51522 = r51519 / r51521;
        return r51522;
}

double f_id(double x, double y) {
        double r51523 = 1.0;
        double r51524 = x;
        double r51525 = r51523 - r51524;
        double r51526 = 3.0;
        double r51527 = r51526 - r51524;
        double r51528 = r51525 * r51527;
        double r51529 = y;
        double r51530 = r51529 * r51526;
        double r51531 = r51528 / r51530;
        return r51531;
}


double f_of(float x, float y) {
        float r51532 = 1.0;
        float r51533 = x;
        float r51534 = r51532 - r51533;
        float r51535 = y;
        float r51536 = r51534 / r51535;
        float r51537 = 3.0;
        float r51538 = r51537 - r51533;
        float r51539 = r51538 / r51537;
        float r51540 = r51536 * r51539;
        return r51540;
}

double f_od(double x, double y) {
        double r51541 = 1.0;
        double r51542 = x;
        double r51543 = r51541 - r51542;
        double r51544 = y;
        double r51545 = r51543 / r51544;
        double r51546 = 3.0;
        double r51547 = r51546 - r51542;
        double r51548 = r51547 / r51546;
        double r51549 = r51545 * r51548;
        return r51549;
}

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 r51550, r51551, r51552, r51553, r51554, r51555, r51556, r51557, r51558;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51550, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51551);
        mpfr_init(r51552);
        mpfr_init_set_str(r51553, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51554);
        mpfr_init(r51555);
        mpfr_init(r51556);
        mpfr_init(r51557);
        mpfr_init(r51558);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r51551, x, MPFR_RNDN);
        mpfr_sub(r51552, r51550, r51551, MPFR_RNDN);
        ;
        mpfr_sub(r51554, r51553, r51551, MPFR_RNDN);
        mpfr_mul(r51555, r51552, r51554, MPFR_RNDN);
        mpfr_set_d(r51556, y, MPFR_RNDN);
        mpfr_mul(r51557, r51556, r51553, MPFR_RNDN);
        mpfr_div(r51558, r51555, r51557, MPFR_RNDN);
        return mpfr_get_d(r51558, MPFR_RNDN);
}

static mpfr_t r51559, r51560, r51561, r51562, r51563, r51564, r51565, r51566, r51567;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51559, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51560);
        mpfr_init(r51561);
        mpfr_init(r51562);
        mpfr_init(r51563);
        mpfr_init_set_str(r51564, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51565);
        mpfr_init(r51566);
        mpfr_init(r51567);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r51560, x, MPFR_RNDN);
        mpfr_sub(r51561, r51559, r51560, MPFR_RNDN);
        mpfr_set_d(r51562, y, MPFR_RNDN);
        mpfr_div(r51563, r51561, r51562, MPFR_RNDN);
        ;
        mpfr_sub(r51565, r51564, r51560, MPFR_RNDN);
        mpfr_div(r51566, r51565, r51564, MPFR_RNDN);
        mpfr_mul(r51567, r51563, r51566, MPFR_RNDN);
        return mpfr_get_d(r51567, MPFR_RNDN);
}

static mpfr_t r51568, r51569, r51570, r51571, r51572, r51573, r51574, r51575, r51576;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51568, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51569);
        mpfr_init(r51570);
        mpfr_init(r51571);
        mpfr_init(r51572);
        mpfr_init_set_str(r51573, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51574);
        mpfr_init(r51575);
        mpfr_init(r51576);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r51569, x, MPFR_RNDN);
        mpfr_sub(r51570, r51568, r51569, MPFR_RNDN);
        mpfr_set_d(r51571, y, MPFR_RNDN);
        mpfr_div(r51572, r51570, r51571, MPFR_RNDN);
        ;
        mpfr_sub(r51574, r51573, r51569, MPFR_RNDN);
        mpfr_div(r51575, r51574, r51573, MPFR_RNDN);
        mpfr_mul(r51576, r51572, r51575, MPFR_RNDN);
        return mpfr_get_d(r51576, MPFR_RNDN);
}

