#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 r52413 = 1.0;
        float r52414 = x;
        float r52415 = r52413 - r52414;
        float r52416 = 3.0;
        float r52417 = r52416 - r52414;
        float r52418 = r52415 * r52417;
        float r52419 = y;
        float r52420 = r52419 * r52416;
        float r52421 = r52418 / r52420;
        return r52421;
}

double f_id(double x, double y) {
        double r52422 = 1.0;
        double r52423 = x;
        double r52424 = r52422 - r52423;
        double r52425 = 3.0;
        double r52426 = r52425 - r52423;
        double r52427 = r52424 * r52426;
        double r52428 = y;
        double r52429 = r52428 * r52425;
        double r52430 = r52427 / r52429;
        return r52430;
}


double f_of(float x, float y) {
        float r52431 = 1.0;
        float r52432 = x;
        float r52433 = r52431 - r52432;
        float r52434 = y;
        float r52435 = r52433 / r52434;
        float r52436 = 3.0;
        float r52437 = r52436 - r52432;
        float r52438 = r52437 / r52436;
        float r52439 = r52435 * r52438;
        return r52439;
}

double f_od(double x, double y) {
        double r52440 = 1.0;
        double r52441 = x;
        double r52442 = r52440 - r52441;
        double r52443 = y;
        double r52444 = r52442 / r52443;
        double r52445 = 3.0;
        double r52446 = r52445 - r52441;
        double r52447 = r52446 / r52445;
        double r52448 = r52444 * r52447;
        return r52448;
}

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 r52449, r52450, r52451, r52452, r52453, r52454, r52455, r52456, r52457;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52449, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52450);
        mpfr_init(r52451);
        mpfr_init_set_str(r52452, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52453);
        mpfr_init(r52454);
        mpfr_init(r52455);
        mpfr_init(r52456);
        mpfr_init(r52457);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52450, x, MPFR_RNDN);
        mpfr_sub(r52451, r52449, r52450, MPFR_RNDN);
        ;
        mpfr_sub(r52453, r52452, r52450, MPFR_RNDN);
        mpfr_mul(r52454, r52451, r52453, MPFR_RNDN);
        mpfr_set_d(r52455, y, MPFR_RNDN);
        mpfr_mul(r52456, r52455, r52452, MPFR_RNDN);
        mpfr_div(r52457, r52454, r52456, MPFR_RNDN);
        return mpfr_get_d(r52457, MPFR_RNDN);
}

static mpfr_t r52458, r52459, r52460, r52461, r52462, r52463, r52464, r52465, r52466;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52458, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52459);
        mpfr_init(r52460);
        mpfr_init(r52461);
        mpfr_init(r52462);
        mpfr_init_set_str(r52463, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52464);
        mpfr_init(r52465);
        mpfr_init(r52466);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r52459, x, MPFR_RNDN);
        mpfr_sub(r52460, r52458, r52459, MPFR_RNDN);
        mpfr_set_d(r52461, y, MPFR_RNDN);
        mpfr_div(r52462, r52460, r52461, MPFR_RNDN);
        ;
        mpfr_sub(r52464, r52463, r52459, MPFR_RNDN);
        mpfr_div(r52465, r52464, r52463, MPFR_RNDN);
        mpfr_mul(r52466, r52462, r52465, MPFR_RNDN);
        return mpfr_get_d(r52466, MPFR_RNDN);
}

static mpfr_t r52467, r52468, r52469, r52470, r52471, r52472, r52473, r52474, r52475;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52467, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52468);
        mpfr_init(r52469);
        mpfr_init(r52470);
        mpfr_init(r52471);
        mpfr_init_set_str(r52472, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52473);
        mpfr_init(r52474);
        mpfr_init(r52475);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r52468, x, MPFR_RNDN);
        mpfr_sub(r52469, r52467, r52468, MPFR_RNDN);
        mpfr_set_d(r52470, y, MPFR_RNDN);
        mpfr_div(r52471, r52469, r52470, MPFR_RNDN);
        ;
        mpfr_sub(r52473, r52472, r52468, MPFR_RNDN);
        mpfr_div(r52474, r52473, r52472, MPFR_RNDN);
        mpfr_mul(r52475, r52471, r52474, MPFR_RNDN);
        return mpfr_get_d(r52475, MPFR_RNDN);
}

