#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 r52217 = 1.0;
        float r52218 = x;
        float r52219 = r52217 - r52218;
        float r52220 = 3.0;
        float r52221 = r52220 - r52218;
        float r52222 = r52219 * r52221;
        float r52223 = y;
        float r52224 = r52223 * r52220;
        float r52225 = r52222 / r52224;
        return r52225;
}

double f_id(double x, double y) {
        double r52226 = 1.0;
        double r52227 = x;
        double r52228 = r52226 - r52227;
        double r52229 = 3.0;
        double r52230 = r52229 - r52227;
        double r52231 = r52228 * r52230;
        double r52232 = y;
        double r52233 = r52232 * r52229;
        double r52234 = r52231 / r52233;
        return r52234;
}


double f_of(float x, float y) {
        float r52235 = 1.0;
        float r52236 = x;
        float r52237 = r52235 - r52236;
        float r52238 = y;
        float r52239 = r52237 / r52238;
        float r52240 = 3.0;
        float r52241 = r52240 - r52236;
        float r52242 = r52241 / r52240;
        float r52243 = r52239 * r52242;
        return r52243;
}

double f_od(double x, double y) {
        double r52244 = 1.0;
        double r52245 = x;
        double r52246 = r52244 - r52245;
        double r52247 = y;
        double r52248 = r52246 / r52247;
        double r52249 = 3.0;
        double r52250 = r52249 - r52245;
        double r52251 = r52250 / r52249;
        double r52252 = r52248 * r52251;
        return r52252;
}

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 r52253, r52254, r52255, r52256, r52257, r52258, r52259, r52260, r52261;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52253, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52254);
        mpfr_init(r52255);
        mpfr_init_set_str(r52256, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52257);
        mpfr_init(r52258);
        mpfr_init(r52259);
        mpfr_init(r52260);
        mpfr_init(r52261);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52254, x, MPFR_RNDN);
        mpfr_sub(r52255, r52253, r52254, MPFR_RNDN);
        ;
        mpfr_sub(r52257, r52256, r52254, MPFR_RNDN);
        mpfr_mul(r52258, r52255, r52257, MPFR_RNDN);
        mpfr_set_d(r52259, y, MPFR_RNDN);
        mpfr_mul(r52260, r52259, r52256, MPFR_RNDN);
        mpfr_div(r52261, r52258, r52260, MPFR_RNDN);
        return mpfr_get_d(r52261, MPFR_RNDN);
}

static mpfr_t r52262, r52263, r52264, r52265, r52266, r52267, r52268, r52269, r52270;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52262, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52263);
        mpfr_init(r52264);
        mpfr_init(r52265);
        mpfr_init(r52266);
        mpfr_init_set_str(r52267, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52268);
        mpfr_init(r52269);
        mpfr_init(r52270);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r52263, x, MPFR_RNDN);
        mpfr_sub(r52264, r52262, r52263, MPFR_RNDN);
        mpfr_set_d(r52265, y, MPFR_RNDN);
        mpfr_div(r52266, r52264, r52265, MPFR_RNDN);
        ;
        mpfr_sub(r52268, r52267, r52263, MPFR_RNDN);
        mpfr_div(r52269, r52268, r52267, MPFR_RNDN);
        mpfr_mul(r52270, r52266, r52269, MPFR_RNDN);
        return mpfr_get_d(r52270, MPFR_RNDN);
}

static mpfr_t r52271, r52272, r52273, r52274, r52275, r52276, r52277, r52278, r52279;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52271, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52272);
        mpfr_init(r52273);
        mpfr_init(r52274);
        mpfr_init(r52275);
        mpfr_init_set_str(r52276, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52277);
        mpfr_init(r52278);
        mpfr_init(r52279);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r52272, x, MPFR_RNDN);
        mpfr_sub(r52273, r52271, r52272, MPFR_RNDN);
        mpfr_set_d(r52274, y, MPFR_RNDN);
        mpfr_div(r52275, r52273, r52274, MPFR_RNDN);
        ;
        mpfr_sub(r52277, r52276, r52272, MPFR_RNDN);
        mpfr_div(r52278, r52277, r52276, MPFR_RNDN);
        mpfr_mul(r52279, r52275, r52278, MPFR_RNDN);
        return mpfr_get_d(r52279, MPFR_RNDN);
}

