#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 r52224 = x;
        float r52225 = r52224 * r52224;
        float r52226 = y;
        float r52227 = 4.0;
        float r52228 = r52226 * r52227;
        float r52229 = r52228 * r52226;
        float r52230 = r52225 - r52229;
        float r52231 = r52225 + r52229;
        float r52232 = r52230 / r52231;
        return r52232;
}

double f_id(double x, double y) {
        double r52233 = x;
        double r52234 = r52233 * r52233;
        double r52235 = y;
        double r52236 = 4.0;
        double r52237 = r52235 * r52236;
        double r52238 = r52237 * r52235;
        double r52239 = r52234 - r52238;
        double r52240 = r52234 + r52238;
        double r52241 = r52239 / r52240;
        return r52241;
}


double f_of(float x, float y) {
        float r52242 = y;
        float r52243 = -7.833327672762858e+152;
        bool r52244 = r52242 <= r52243;
        float r52245 = -1.0;
        float r52246 = -4.242771342822211e-79;
        bool r52247 = r52242 <= r52246;
        float r52248 = x;
        float r52249 = r52248 * r52248;
        float r52250 = 4.0;
        float r52251 = r52242 * r52250;
        float r52252 = r52251 * r52242;
        float r52253 = r52249 + r52252;
        float r52254 = r52249 / r52253;
        float r52255 = r52252 / r52253;
        float r52256 = r52254 - r52255;
        float r52257 = 1.0512428670373637e-135;
        bool r52258 = r52242 <= r52257;
        float r52259 = 1;
        float r52260 = 2.586528948499352e+28;
        bool r52261 = r52242 <= r52260;
        float r52262 = 6.89776155181784e+58;
        bool r52263 = r52242 <= r52262;
        float r52264 = r52263 ? r52259 : r52245;
        float r52265 = r52261 ? r52256 : r52264;
        float r52266 = r52258 ? r52259 : r52265;
        float r52267 = r52247 ? r52256 : r52266;
        float r52268 = r52244 ? r52245 : r52267;
        return r52268;
}

double f_od(double x, double y) {
        double r52269 = y;
        double r52270 = -7.833327672762858e+152;
        bool r52271 = r52269 <= r52270;
        double r52272 = -1.0;
        double r52273 = -4.242771342822211e-79;
        bool r52274 = r52269 <= r52273;
        double r52275 = x;
        double r52276 = r52275 * r52275;
        double r52277 = 4.0;
        double r52278 = r52269 * r52277;
        double r52279 = r52278 * r52269;
        double r52280 = r52276 + r52279;
        double r52281 = r52276 / r52280;
        double r52282 = r52279 / r52280;
        double r52283 = r52281 - r52282;
        double r52284 = 1.0512428670373637e-135;
        bool r52285 = r52269 <= r52284;
        double r52286 = 1;
        double r52287 = 2.586528948499352e+28;
        bool r52288 = r52269 <= r52287;
        double r52289 = 6.89776155181784e+58;
        bool r52290 = r52269 <= r52289;
        double r52291 = r52290 ? r52286 : r52272;
        double r52292 = r52288 ? r52283 : r52291;
        double r52293 = r52285 ? r52286 : r52292;
        double r52294 = r52274 ? r52283 : r52293;
        double r52295 = r52271 ? r52272 : r52294;
        return r52295;
}

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 r52296, r52297, r52298, r52299, r52300, r52301, r52302, r52303, r52304;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52296);
        mpfr_init(r52297);
        mpfr_init(r52298);
        mpfr_init_set_str(r52299, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52300);
        mpfr_init(r52301);
        mpfr_init(r52302);
        mpfr_init(r52303);
        mpfr_init(r52304);
}

double f_im(double x, double y) {
        mpfr_set_d(r52296, x, MPFR_RNDN);
        mpfr_mul(r52297, r52296, r52296, MPFR_RNDN);
        mpfr_set_d(r52298, y, MPFR_RNDN);
        ;
        mpfr_mul(r52300, r52298, r52299, MPFR_RNDN);
        mpfr_mul(r52301, r52300, r52298, MPFR_RNDN);
        mpfr_sub(r52302, r52297, r52301, MPFR_RNDN);
        mpfr_add(r52303, r52297, r52301, MPFR_RNDN);
        mpfr_div(r52304, r52302, r52303, MPFR_RNDN);
        return mpfr_get_d(r52304, MPFR_RNDN);
}

static mpfr_t r52305, r52306, r52307, r52308, r52309, r52310, r52311, r52312, r52313, r52314, r52315, r52316, r52317, r52318, r52319, r52320, r52321, r52322, r52323, r52324, r52325, r52326, r52327, r52328, r52329, r52330, r52331;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52305);
        mpfr_init_set_str(r52306, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r52307);
        mpfr_init_set_str(r52308, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52309, "-4.242771342822211e-79", 10, MPFR_RNDN);
        mpfr_init(r52310);
        mpfr_init(r52311);
        mpfr_init(r52312);
        mpfr_init_set_str(r52313, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52314);
        mpfr_init(r52315);
        mpfr_init(r52316);
        mpfr_init(r52317);
        mpfr_init(r52318);
        mpfr_init(r52319);
        mpfr_init_set_str(r52320, "1.0512428670373637e-135", 10, MPFR_RNDN);
        mpfr_init(r52321);
        mpfr_init_set_str(r52322, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52323, "2.586528948499352e+28", 10, MPFR_RNDN);
        mpfr_init(r52324);
        mpfr_init_set_str(r52325, "6.89776155181784e+58", 10, MPFR_RNDN);
        mpfr_init(r52326);
        mpfr_init(r52327);
        mpfr_init(r52328);
        mpfr_init(r52329);
        mpfr_init(r52330);
        mpfr_init(r52331);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52305, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52307, mpfr_cmp(r52305, r52306) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52310, mpfr_cmp(r52305, r52309) <= 0, MPFR_RNDN);
        mpfr_set_d(r52311, x, MPFR_RNDN);
        mpfr_mul(r52312, r52311, r52311, MPFR_RNDN);
        ;
        mpfr_mul(r52314, r52305, r52313, MPFR_RNDN);
        mpfr_mul(r52315, r52314, r52305, MPFR_RNDN);
        mpfr_add(r52316, r52312, r52315, MPFR_RNDN);
        mpfr_div(r52317, r52312, r52316, MPFR_RNDN);
        mpfr_div(r52318, r52315, r52316, MPFR_RNDN);
        mpfr_sub(r52319, r52317, r52318, MPFR_RNDN);
        ;
        mpfr_set_si(r52321, mpfr_cmp(r52305, r52320) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52324, mpfr_cmp(r52305, r52323) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52326, mpfr_cmp(r52305, r52325) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52326, MPFR_RNDN)) { mpfr_set(r52327, r52322, MPFR_RNDN); } else { mpfr_set(r52327, r52308, MPFR_RNDN); };
        if (mpfr_get_si(r52324, MPFR_RNDN)) { mpfr_set(r52328, r52319, MPFR_RNDN); } else { mpfr_set(r52328, r52327, MPFR_RNDN); };
        if (mpfr_get_si(r52321, MPFR_RNDN)) { mpfr_set(r52329, r52322, MPFR_RNDN); } else { mpfr_set(r52329, r52328, MPFR_RNDN); };
        if (mpfr_get_si(r52310, MPFR_RNDN)) { mpfr_set(r52330, r52319, MPFR_RNDN); } else { mpfr_set(r52330, r52329, MPFR_RNDN); };
        if (mpfr_get_si(r52307, MPFR_RNDN)) { mpfr_set(r52331, r52308, MPFR_RNDN); } else { mpfr_set(r52331, r52330, MPFR_RNDN); };
        return mpfr_get_d(r52331, MPFR_RNDN);
}

static mpfr_t r52332, r52333, r52334, r52335, r52336, r52337, r52338, r52339, r52340, r52341, r52342, r52343, r52344, r52345, r52346, r52347, r52348, r52349, r52350, r52351, r52352, r52353, r52354, r52355, r52356, r52357, r52358;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52332);
        mpfr_init_set_str(r52333, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r52334);
        mpfr_init_set_str(r52335, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52336, "-4.242771342822211e-79", 10, MPFR_RNDN);
        mpfr_init(r52337);
        mpfr_init(r52338);
        mpfr_init(r52339);
        mpfr_init_set_str(r52340, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52341);
        mpfr_init(r52342);
        mpfr_init(r52343);
        mpfr_init(r52344);
        mpfr_init(r52345);
        mpfr_init(r52346);
        mpfr_init_set_str(r52347, "1.0512428670373637e-135", 10, MPFR_RNDN);
        mpfr_init(r52348);
        mpfr_init_set_str(r52349, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52350, "2.586528948499352e+28", 10, MPFR_RNDN);
        mpfr_init(r52351);
        mpfr_init_set_str(r52352, "6.89776155181784e+58", 10, MPFR_RNDN);
        mpfr_init(r52353);
        mpfr_init(r52354);
        mpfr_init(r52355);
        mpfr_init(r52356);
        mpfr_init(r52357);
        mpfr_init(r52358);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52332, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52334, mpfr_cmp(r52332, r52333) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52337, mpfr_cmp(r52332, r52336) <= 0, MPFR_RNDN);
        mpfr_set_d(r52338, x, MPFR_RNDN);
        mpfr_mul(r52339, r52338, r52338, MPFR_RNDN);
        ;
        mpfr_mul(r52341, r52332, r52340, MPFR_RNDN);
        mpfr_mul(r52342, r52341, r52332, MPFR_RNDN);
        mpfr_add(r52343, r52339, r52342, MPFR_RNDN);
        mpfr_div(r52344, r52339, r52343, MPFR_RNDN);
        mpfr_div(r52345, r52342, r52343, MPFR_RNDN);
        mpfr_sub(r52346, r52344, r52345, MPFR_RNDN);
        ;
        mpfr_set_si(r52348, mpfr_cmp(r52332, r52347) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52351, mpfr_cmp(r52332, r52350) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52353, mpfr_cmp(r52332, r52352) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52353, MPFR_RNDN)) { mpfr_set(r52354, r52349, MPFR_RNDN); } else { mpfr_set(r52354, r52335, MPFR_RNDN); };
        if (mpfr_get_si(r52351, MPFR_RNDN)) { mpfr_set(r52355, r52346, MPFR_RNDN); } else { mpfr_set(r52355, r52354, MPFR_RNDN); };
        if (mpfr_get_si(r52348, MPFR_RNDN)) { mpfr_set(r52356, r52349, MPFR_RNDN); } else { mpfr_set(r52356, r52355, MPFR_RNDN); };
        if (mpfr_get_si(r52337, MPFR_RNDN)) { mpfr_set(r52357, r52346, MPFR_RNDN); } else { mpfr_set(r52357, r52356, MPFR_RNDN); };
        if (mpfr_get_si(r52334, MPFR_RNDN)) { mpfr_set(r52358, r52335, MPFR_RNDN); } else { mpfr_set(r52358, r52357, MPFR_RNDN); };
        return mpfr_get_d(r52358, MPFR_RNDN);
}

