#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 r52255 = 1.0;
        float r52256 = x;
        float r52257 = r52255 - r52256;
        float r52258 = 3.0;
        float r52259 = r52258 - r52256;
        float r52260 = r52257 * r52259;
        float r52261 = y;
        float r52262 = r52261 * r52258;
        float r52263 = r52260 / r52262;
        return r52263;
}

double f_id(double x, double y) {
        double r52264 = 1.0;
        double r52265 = x;
        double r52266 = r52264 - r52265;
        double r52267 = 3.0;
        double r52268 = r52267 - r52265;
        double r52269 = r52266 * r52268;
        double r52270 = y;
        double r52271 = r52270 * r52267;
        double r52272 = r52269 / r52271;
        return r52272;
}


double f_of(float x, float y) {
        float r52273 = 1.0;
        float r52274 = x;
        float r52275 = r52273 - r52274;
        float r52276 = y;
        float r52277 = r52275 / r52276;
        float r52278 = 3.0;
        float r52279 = r52278 - r52274;
        float r52280 = r52279 / r52278;
        float r52281 = r52277 * r52280;
        return r52281;
}

double f_od(double x, double y) {
        double r52282 = 1.0;
        double r52283 = x;
        double r52284 = r52282 - r52283;
        double r52285 = y;
        double r52286 = r52284 / r52285;
        double r52287 = 3.0;
        double r52288 = r52287 - r52283;
        double r52289 = r52288 / r52287;
        double r52290 = r52286 * r52289;
        return r52290;
}

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 r52291, r52292, r52293, r52294, r52295, r52296, r52297, r52298, r52299;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52291, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52292);
        mpfr_init(r52293);
        mpfr_init_set_str(r52294, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52295);
        mpfr_init(r52296);
        mpfr_init(r52297);
        mpfr_init(r52298);
        mpfr_init(r52299);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52292, x, MPFR_RNDN);
        mpfr_sub(r52293, r52291, r52292, MPFR_RNDN);
        ;
        mpfr_sub(r52295, r52294, r52292, MPFR_RNDN);
        mpfr_mul(r52296, r52293, r52295, MPFR_RNDN);
        mpfr_set_d(r52297, y, MPFR_RNDN);
        mpfr_mul(r52298, r52297, r52294, MPFR_RNDN);
        mpfr_div(r52299, r52296, r52298, MPFR_RNDN);
        return mpfr_get_d(r52299, MPFR_RNDN);
}

static mpfr_t r52300, r52301, r52302, r52303, r52304, r52305, r52306, r52307, r52308;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52300, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52301);
        mpfr_init(r52302);
        mpfr_init(r52303);
        mpfr_init(r52304);
        mpfr_init_set_str(r52305, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52306);
        mpfr_init(r52307);
        mpfr_init(r52308);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r52301, x, MPFR_RNDN);
        mpfr_sub(r52302, r52300, r52301, MPFR_RNDN);
        mpfr_set_d(r52303, y, MPFR_RNDN);
        mpfr_div(r52304, r52302, r52303, MPFR_RNDN);
        ;
        mpfr_sub(r52306, r52305, r52301, MPFR_RNDN);
        mpfr_div(r52307, r52306, r52305, MPFR_RNDN);
        mpfr_mul(r52308, r52304, r52307, MPFR_RNDN);
        return mpfr_get_d(r52308, MPFR_RNDN);
}

static mpfr_t r52309, r52310, r52311, r52312, r52313, r52314, r52315, r52316, r52317;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52309, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52310);
        mpfr_init(r52311);
        mpfr_init(r52312);
        mpfr_init(r52313);
        mpfr_init_set_str(r52314, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52315);
        mpfr_init(r52316);
        mpfr_init(r52317);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r52310, x, MPFR_RNDN);
        mpfr_sub(r52311, r52309, r52310, MPFR_RNDN);
        mpfr_set_d(r52312, y, MPFR_RNDN);
        mpfr_div(r52313, r52311, r52312, MPFR_RNDN);
        ;
        mpfr_sub(r52315, r52314, r52310, MPFR_RNDN);
        mpfr_div(r52316, r52315, r52314, MPFR_RNDN);
        mpfr_mul(r52317, r52313, r52316, MPFR_RNDN);
        return mpfr_get_d(r52317, MPFR_RNDN);
}

