#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 r52581 = 1.0;
        float r52582 = x;
        float r52583 = r52581 - r52582;
        float r52584 = 3.0;
        float r52585 = r52584 - r52582;
        float r52586 = r52583 * r52585;
        float r52587 = y;
        float r52588 = r52587 * r52584;
        float r52589 = r52586 / r52588;
        return r52589;
}

double f_id(double x, double y) {
        double r52590 = 1.0;
        double r52591 = x;
        double r52592 = r52590 - r52591;
        double r52593 = 3.0;
        double r52594 = r52593 - r52591;
        double r52595 = r52592 * r52594;
        double r52596 = y;
        double r52597 = r52596 * r52593;
        double r52598 = r52595 / r52597;
        return r52598;
}


double f_of(float x, float y) {
        float r52599 = 1.0;
        float r52600 = x;
        float r52601 = r52599 - r52600;
        float r52602 = y;
        float r52603 = r52601 / r52602;
        float r52604 = 3.0;
        float r52605 = r52604 - r52600;
        float r52606 = r52605 / r52604;
        float r52607 = r52603 * r52606;
        return r52607;
}

double f_od(double x, double y) {
        double r52608 = 1.0;
        double r52609 = x;
        double r52610 = r52608 - r52609;
        double r52611 = y;
        double r52612 = r52610 / r52611;
        double r52613 = 3.0;
        double r52614 = r52613 - r52609;
        double r52615 = r52614 / r52613;
        double r52616 = r52612 * r52615;
        return r52616;
}

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 r52617, r52618, r52619, r52620, r52621, r52622, r52623, r52624, r52625;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52617, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52618);
        mpfr_init(r52619);
        mpfr_init_set_str(r52620, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52621);
        mpfr_init(r52622);
        mpfr_init(r52623);
        mpfr_init(r52624);
        mpfr_init(r52625);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52618, x, MPFR_RNDN);
        mpfr_sub(r52619, r52617, r52618, MPFR_RNDN);
        ;
        mpfr_sub(r52621, r52620, r52618, MPFR_RNDN);
        mpfr_mul(r52622, r52619, r52621, MPFR_RNDN);
        mpfr_set_d(r52623, y, MPFR_RNDN);
        mpfr_mul(r52624, r52623, r52620, MPFR_RNDN);
        mpfr_div(r52625, r52622, r52624, MPFR_RNDN);
        return mpfr_get_d(r52625, MPFR_RNDN);
}

static mpfr_t r52626, r52627, r52628, r52629, r52630, r52631, r52632, r52633, r52634;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52626, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52627);
        mpfr_init(r52628);
        mpfr_init(r52629);
        mpfr_init(r52630);
        mpfr_init_set_str(r52631, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52632);
        mpfr_init(r52633);
        mpfr_init(r52634);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r52627, x, MPFR_RNDN);
        mpfr_sub(r52628, r52626, r52627, MPFR_RNDN);
        mpfr_set_d(r52629, y, MPFR_RNDN);
        mpfr_div(r52630, r52628, r52629, MPFR_RNDN);
        ;
        mpfr_sub(r52632, r52631, r52627, MPFR_RNDN);
        mpfr_div(r52633, r52632, r52631, MPFR_RNDN);
        mpfr_mul(r52634, r52630, r52633, MPFR_RNDN);
        return mpfr_get_d(r52634, MPFR_RNDN);
}

static mpfr_t r52635, r52636, r52637, r52638, r52639, r52640, r52641, r52642, r52643;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52635, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52636);
        mpfr_init(r52637);
        mpfr_init(r52638);
        mpfr_init(r52639);
        mpfr_init_set_str(r52640, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52641);
        mpfr_init(r52642);
        mpfr_init(r52643);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r52636, x, MPFR_RNDN);
        mpfr_sub(r52637, r52635, r52636, MPFR_RNDN);
        mpfr_set_d(r52638, y, MPFR_RNDN);
        mpfr_div(r52639, r52637, r52638, MPFR_RNDN);
        ;
        mpfr_sub(r52641, r52640, r52636, MPFR_RNDN);
        mpfr_div(r52642, r52641, r52640, MPFR_RNDN);
        mpfr_mul(r52643, r52639, r52642, MPFR_RNDN);
        return mpfr_get_d(r52643, MPFR_RNDN);
}

