#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.TwoD.Arc:arcBetween from diagrams-lib-1.3.0.3";

double f_if(float x, float y) {
        float r52318 = x;
        float r52319 = r52318 * r52318;
        float r52320 = y;
        float r52321 = 4.0;
        float r52322 = r52320 * r52321;
        float r52323 = r52322 * r52320;
        float r52324 = r52319 - r52323;
        float r52325 = r52319 + r52323;
        float r52326 = r52324 / r52325;
        return r52326;
}

double f_id(double x, double y) {
        double r52327 = x;
        double r52328 = r52327 * r52327;
        double r52329 = y;
        double r52330 = 4.0;
        double r52331 = r52329 * r52330;
        double r52332 = r52331 * r52329;
        double r52333 = r52328 - r52332;
        double r52334 = r52328 + r52332;
        double r52335 = r52333 / r52334;
        return r52335;
}


double f_of(float x, float y) {
        float r52336 = y;
        float r52337 = -7.802168173177268e+153;
        bool r52338 = r52336 <= r52337;
        float r52339 = -1.0;
        float r52340 = -5.836330729285146e-79;
        bool r52341 = r52336 <= r52340;
        float r52342 = x;
        float r52343 = r52342 * r52342;
        float r52344 = 4.0;
        float r52345 = r52336 * r52344;
        float r52346 = r52345 * r52336;
        float r52347 = r52343 + r52346;
        float r52348 = r52343 / r52347;
        float r52349 = r52346 / r52347;
        float r52350 = r52348 - r52349;
        float r52351 = 3.452373824601348e-136;
        bool r52352 = r52336 <= r52351;
        float r52353 = 1;
        float r52354 = 2.424870889256943e+28;
        bool r52355 = r52336 <= r52354;
        float r52356 = 5.208440760297056e+55;
        bool r52357 = r52336 <= r52356;
        float r52358 = r52357 ? r52353 : r52339;
        float r52359 = r52355 ? r52350 : r52358;
        float r52360 = r52352 ? r52353 : r52359;
        float r52361 = r52341 ? r52350 : r52360;
        float r52362 = r52338 ? r52339 : r52361;
        return r52362;
}

double f_od(double x, double y) {
        double r52363 = y;
        double r52364 = -7.802168173177268e+153;
        bool r52365 = r52363 <= r52364;
        double r52366 = -1.0;
        double r52367 = -5.836330729285146e-79;
        bool r52368 = r52363 <= r52367;
        double r52369 = x;
        double r52370 = r52369 * r52369;
        double r52371 = 4.0;
        double r52372 = r52363 * r52371;
        double r52373 = r52372 * r52363;
        double r52374 = r52370 + r52373;
        double r52375 = r52370 / r52374;
        double r52376 = r52373 / r52374;
        double r52377 = r52375 - r52376;
        double r52378 = 3.452373824601348e-136;
        bool r52379 = r52363 <= r52378;
        double r52380 = 1;
        double r52381 = 2.424870889256943e+28;
        bool r52382 = r52363 <= r52381;
        double r52383 = 5.208440760297056e+55;
        bool r52384 = r52363 <= r52383;
        double r52385 = r52384 ? r52380 : r52366;
        double r52386 = r52382 ? r52377 : r52385;
        double r52387 = r52379 ? r52380 : r52386;
        double r52388 = r52368 ? r52377 : r52387;
        double r52389 = r52365 ? r52366 : r52388;
        return r52389;
}

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 r52390, r52391, r52392, r52393, r52394, r52395, r52396, r52397, r52398;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52390);
        mpfr_init(r52391);
        mpfr_init(r52392);
        mpfr_init_set_str(r52393, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52394);
        mpfr_init(r52395);
        mpfr_init(r52396);
        mpfr_init(r52397);
        mpfr_init(r52398);
}

double f_im(double x, double y) {
        mpfr_set_d(r52390, x, MPFR_RNDN);
        mpfr_mul(r52391, r52390, r52390, MPFR_RNDN);
        mpfr_set_d(r52392, y, MPFR_RNDN);
        ;
        mpfr_mul(r52394, r52392, r52393, MPFR_RNDN);
        mpfr_mul(r52395, r52394, r52392, MPFR_RNDN);
        mpfr_sub(r52396, r52391, r52395, MPFR_RNDN);
        mpfr_add(r52397, r52391, r52395, MPFR_RNDN);
        mpfr_div(r52398, r52396, r52397, MPFR_RNDN);
        return mpfr_get_d(r52398, MPFR_RNDN);
}

static mpfr_t r52399, r52400, r52401, r52402, r52403, r52404, r52405, r52406, r52407, r52408, r52409, r52410, r52411, r52412, r52413, r52414, r52415, r52416, r52417, r52418, r52419, r52420, r52421, r52422, r52423, r52424, r52425;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52399);
        mpfr_init_set_str(r52400, "-7.802168173177268e+153", 10, MPFR_RNDN);
        mpfr_init(r52401);
        mpfr_init_set_str(r52402, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52403, "-5.836330729285146e-79", 10, MPFR_RNDN);
        mpfr_init(r52404);
        mpfr_init(r52405);
        mpfr_init(r52406);
        mpfr_init_set_str(r52407, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52408);
        mpfr_init(r52409);
        mpfr_init(r52410);
        mpfr_init(r52411);
        mpfr_init(r52412);
        mpfr_init(r52413);
        mpfr_init_set_str(r52414, "3.452373824601348e-136", 10, MPFR_RNDN);
        mpfr_init(r52415);
        mpfr_init_set_str(r52416, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52417, "2.424870889256943e+28", 10, MPFR_RNDN);
        mpfr_init(r52418);
        mpfr_init_set_str(r52419, "5.208440760297056e+55", 10, MPFR_RNDN);
        mpfr_init(r52420);
        mpfr_init(r52421);
        mpfr_init(r52422);
        mpfr_init(r52423);
        mpfr_init(r52424);
        mpfr_init(r52425);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52399, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52401, mpfr_cmp(r52399, r52400) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52404, mpfr_cmp(r52399, r52403) <= 0, MPFR_RNDN);
        mpfr_set_d(r52405, x, MPFR_RNDN);
        mpfr_mul(r52406, r52405, r52405, MPFR_RNDN);
        ;
        mpfr_mul(r52408, r52399, r52407, MPFR_RNDN);
        mpfr_mul(r52409, r52408, r52399, MPFR_RNDN);
        mpfr_add(r52410, r52406, r52409, MPFR_RNDN);
        mpfr_div(r52411, r52406, r52410, MPFR_RNDN);
        mpfr_div(r52412, r52409, r52410, MPFR_RNDN);
        mpfr_sub(r52413, r52411, r52412, MPFR_RNDN);
        ;
        mpfr_set_si(r52415, mpfr_cmp(r52399, r52414) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52418, mpfr_cmp(r52399, r52417) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52420, mpfr_cmp(r52399, r52419) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52420, MPFR_RNDN)) { mpfr_set(r52421, r52416, MPFR_RNDN); } else { mpfr_set(r52421, r52402, MPFR_RNDN); };
        if (mpfr_get_si(r52418, MPFR_RNDN)) { mpfr_set(r52422, r52413, MPFR_RNDN); } else { mpfr_set(r52422, r52421, MPFR_RNDN); };
        if (mpfr_get_si(r52415, MPFR_RNDN)) { mpfr_set(r52423, r52416, MPFR_RNDN); } else { mpfr_set(r52423, r52422, MPFR_RNDN); };
        if (mpfr_get_si(r52404, MPFR_RNDN)) { mpfr_set(r52424, r52413, MPFR_RNDN); } else { mpfr_set(r52424, r52423, MPFR_RNDN); };
        if (mpfr_get_si(r52401, MPFR_RNDN)) { mpfr_set(r52425, r52402, MPFR_RNDN); } else { mpfr_set(r52425, r52424, MPFR_RNDN); };
        return mpfr_get_d(r52425, MPFR_RNDN);
}

static mpfr_t r52426, r52427, r52428, r52429, r52430, r52431, r52432, r52433, r52434, r52435, r52436, r52437, r52438, r52439, r52440, r52441, r52442, r52443, r52444, r52445, r52446, r52447, r52448, r52449, r52450, r52451, r52452;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52426);
        mpfr_init_set_str(r52427, "-7.802168173177268e+153", 10, MPFR_RNDN);
        mpfr_init(r52428);
        mpfr_init_set_str(r52429, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52430, "-5.836330729285146e-79", 10, MPFR_RNDN);
        mpfr_init(r52431);
        mpfr_init(r52432);
        mpfr_init(r52433);
        mpfr_init_set_str(r52434, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52435);
        mpfr_init(r52436);
        mpfr_init(r52437);
        mpfr_init(r52438);
        mpfr_init(r52439);
        mpfr_init(r52440);
        mpfr_init_set_str(r52441, "3.452373824601348e-136", 10, MPFR_RNDN);
        mpfr_init(r52442);
        mpfr_init_set_str(r52443, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52444, "2.424870889256943e+28", 10, MPFR_RNDN);
        mpfr_init(r52445);
        mpfr_init_set_str(r52446, "5.208440760297056e+55", 10, MPFR_RNDN);
        mpfr_init(r52447);
        mpfr_init(r52448);
        mpfr_init(r52449);
        mpfr_init(r52450);
        mpfr_init(r52451);
        mpfr_init(r52452);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52426, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52428, mpfr_cmp(r52426, r52427) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52431, mpfr_cmp(r52426, r52430) <= 0, MPFR_RNDN);
        mpfr_set_d(r52432, x, MPFR_RNDN);
        mpfr_mul(r52433, r52432, r52432, MPFR_RNDN);
        ;
        mpfr_mul(r52435, r52426, r52434, MPFR_RNDN);
        mpfr_mul(r52436, r52435, r52426, MPFR_RNDN);
        mpfr_add(r52437, r52433, r52436, MPFR_RNDN);
        mpfr_div(r52438, r52433, r52437, MPFR_RNDN);
        mpfr_div(r52439, r52436, r52437, MPFR_RNDN);
        mpfr_sub(r52440, r52438, r52439, MPFR_RNDN);
        ;
        mpfr_set_si(r52442, mpfr_cmp(r52426, r52441) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52445, mpfr_cmp(r52426, r52444) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52447, mpfr_cmp(r52426, r52446) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52447, MPFR_RNDN)) { mpfr_set(r52448, r52443, MPFR_RNDN); } else { mpfr_set(r52448, r52429, MPFR_RNDN); };
        if (mpfr_get_si(r52445, MPFR_RNDN)) { mpfr_set(r52449, r52440, MPFR_RNDN); } else { mpfr_set(r52449, r52448, MPFR_RNDN); };
        if (mpfr_get_si(r52442, MPFR_RNDN)) { mpfr_set(r52450, r52443, MPFR_RNDN); } else { mpfr_set(r52450, r52449, MPFR_RNDN); };
        if (mpfr_get_si(r52431, MPFR_RNDN)) { mpfr_set(r52451, r52440, MPFR_RNDN); } else { mpfr_set(r52451, r52450, MPFR_RNDN); };
        if (mpfr_get_si(r52428, MPFR_RNDN)) { mpfr_set(r52452, r52429, MPFR_RNDN); } else { mpfr_set(r52452, r52451, MPFR_RNDN); };
        return mpfr_get_d(r52452, MPFR_RNDN);
}

