#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 r52449 = 1.0;
        float r52450 = x;
        float r52451 = r52449 - r52450;
        float r52452 = 3.0;
        float r52453 = r52452 - r52450;
        float r52454 = r52451 * r52453;
        float r52455 = y;
        float r52456 = r52455 * r52452;
        float r52457 = r52454 / r52456;
        return r52457;
}

double f_id(double x, double y) {
        double r52458 = 1.0;
        double r52459 = x;
        double r52460 = r52458 - r52459;
        double r52461 = 3.0;
        double r52462 = r52461 - r52459;
        double r52463 = r52460 * r52462;
        double r52464 = y;
        double r52465 = r52464 * r52461;
        double r52466 = r52463 / r52465;
        return r52466;
}


double f_of(float x, float y) {
        float r52467 = 1.0;
        float r52468 = x;
        float r52469 = r52467 - r52468;
        float r52470 = y;
        float r52471 = r52469 / r52470;
        float r52472 = 3.0;
        float r52473 = r52472 - r52468;
        float r52474 = r52473 / r52472;
        float r52475 = r52471 * r52474;
        return r52475;
}

double f_od(double x, double y) {
        double r52476 = 1.0;
        double r52477 = x;
        double r52478 = r52476 - r52477;
        double r52479 = y;
        double r52480 = r52478 / r52479;
        double r52481 = 3.0;
        double r52482 = r52481 - r52477;
        double r52483 = r52482 / r52481;
        double r52484 = r52480 * r52483;
        return r52484;
}

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 r52485, r52486, r52487, r52488, r52489, r52490, r52491, r52492, r52493;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52485, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52486);
        mpfr_init(r52487);
        mpfr_init_set_str(r52488, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52489);
        mpfr_init(r52490);
        mpfr_init(r52491);
        mpfr_init(r52492);
        mpfr_init(r52493);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52486, x, MPFR_RNDN);
        mpfr_sub(r52487, r52485, r52486, MPFR_RNDN);
        ;
        mpfr_sub(r52489, r52488, r52486, MPFR_RNDN);
        mpfr_mul(r52490, r52487, r52489, MPFR_RNDN);
        mpfr_set_d(r52491, y, MPFR_RNDN);
        mpfr_mul(r52492, r52491, r52488, MPFR_RNDN);
        mpfr_div(r52493, r52490, r52492, MPFR_RNDN);
        return mpfr_get_d(r52493, MPFR_RNDN);
}

static mpfr_t r52494, r52495, r52496, r52497, r52498, r52499, r52500, r52501, r52502;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52494, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52495);
        mpfr_init(r52496);
        mpfr_init(r52497);
        mpfr_init(r52498);
        mpfr_init_set_str(r52499, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52500);
        mpfr_init(r52501);
        mpfr_init(r52502);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r52495, x, MPFR_RNDN);
        mpfr_sub(r52496, r52494, r52495, MPFR_RNDN);
        mpfr_set_d(r52497, y, MPFR_RNDN);
        mpfr_div(r52498, r52496, r52497, MPFR_RNDN);
        ;
        mpfr_sub(r52500, r52499, r52495, MPFR_RNDN);
        mpfr_div(r52501, r52500, r52499, MPFR_RNDN);
        mpfr_mul(r52502, r52498, r52501, MPFR_RNDN);
        return mpfr_get_d(r52502, MPFR_RNDN);
}

static mpfr_t r52503, r52504, r52505, r52506, r52507, r52508, r52509, r52510, r52511;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52503, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52504);
        mpfr_init(r52505);
        mpfr_init(r52506);
        mpfr_init(r52507);
        mpfr_init_set_str(r52508, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52509);
        mpfr_init(r52510);
        mpfr_init(r52511);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r52504, x, MPFR_RNDN);
        mpfr_sub(r52505, r52503, r52504, MPFR_RNDN);
        mpfr_set_d(r52506, y, MPFR_RNDN);
        mpfr_div(r52507, r52505, r52506, MPFR_RNDN);
        ;
        mpfr_sub(r52509, r52508, r52504, MPFR_RNDN);
        mpfr_div(r52510, r52509, r52508, MPFR_RNDN);
        mpfr_mul(r52511, r52507, r52510, MPFR_RNDN);
        return mpfr_get_d(r52511, MPFR_RNDN);
}

