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

char *name = "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F";

double f_if(float x, float y, float z, float t, float a) {
        float r41526 = x;
        float r41527 = y;
        float r41528 = z;
        float r41529 = t;
        float r41530 = r41528 - r41529;
        float r41531 = r41527 * r41530;
        float r41532 = a;
        float r41533 = r41531 / r41532;
        float r41534 = r41526 - r41533;
        return r41534;
}

double f_id(double x, double y, double z, double t, double a) {
        double r41535 = x;
        double r41536 = y;
        double r41537 = z;
        double r41538 = t;
        double r41539 = r41537 - r41538;
        double r41540 = r41536 * r41539;
        double r41541 = a;
        double r41542 = r41540 / r41541;
        double r41543 = r41535 - r41542;
        return r41543;
}


double f_of(float x, float y, float z, float t, float a) {
        float r41544 = a;
        float r41545 = -5.273243369695188e-34;
        bool r41546 = r41544 <= r41545;
        float r41547 = x;
        float r41548 = y;
        float r41549 = z;
        float r41550 = t;
        float r41551 = r41549 - r41550;
        float r41552 = r41544 / r41551;
        float r41553 = r41548 / r41552;
        float r41554 = r41547 - r41553;
        float r41555 = 3.833302372270341e-33;
        bool r41556 = r41544 <= r41555;
        float r41557 = r41548 * r41551;
        float r41558 = r41557 / r41544;
        float r41559 = r41547 - r41558;
        float r41560 = r41548 / r41544;
        float r41561 = r41560 * r41549;
        float r41562 = -r41550;
        float r41563 = r41560 * r41562;
        float r41564 = r41561 + r41563;
        float r41565 = r41547 - r41564;
        float r41566 = r41556 ? r41559 : r41565;
        float r41567 = r41546 ? r41554 : r41566;
        return r41567;
}

double f_od(double x, double y, double z, double t, double a) {
        double r41568 = a;
        double r41569 = -5.273243369695188e-34;
        bool r41570 = r41568 <= r41569;
        double r41571 = x;
        double r41572 = y;
        double r41573 = z;
        double r41574 = t;
        double r41575 = r41573 - r41574;
        double r41576 = r41568 / r41575;
        double r41577 = r41572 / r41576;
        double r41578 = r41571 - r41577;
        double r41579 = 3.833302372270341e-33;
        bool r41580 = r41568 <= r41579;
        double r41581 = r41572 * r41575;
        double r41582 = r41581 / r41568;
        double r41583 = r41571 - r41582;
        double r41584 = r41572 / r41568;
        double r41585 = r41584 * r41573;
        double r41586 = -r41574;
        double r41587 = r41584 * r41586;
        double r41588 = r41585 + r41587;
        double r41589 = r41571 - r41588;
        double r41590 = r41580 ? r41583 : r41589;
        double r41591 = r41570 ? r41578 : r41590;
        return r41591;
}

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 r41592, r41593, r41594, r41595, r41596, r41597, r41598, r41599, r41600;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41592);
        mpfr_init(r41593);
        mpfr_init(r41594);
        mpfr_init(r41595);
        mpfr_init(r41596);
        mpfr_init(r41597);
        mpfr_init(r41598);
        mpfr_init(r41599);
        mpfr_init(r41600);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41592, x, MPFR_RNDN);
        mpfr_set_d(r41593, y, MPFR_RNDN);
        mpfr_set_d(r41594, z, MPFR_RNDN);
        mpfr_set_d(r41595, t, MPFR_RNDN);
        mpfr_sub(r41596, r41594, r41595, MPFR_RNDN);
        mpfr_mul(r41597, r41593, r41596, MPFR_RNDN);
        mpfr_set_d(r41598, a, MPFR_RNDN);
        mpfr_div(r41599, r41597, r41598, MPFR_RNDN);
        mpfr_sub(r41600, r41592, r41599, MPFR_RNDN);
        return mpfr_get_d(r41600, MPFR_RNDN);
}

static mpfr_t r41601, r41602, r41603, r41604, r41605, r41606, r41607, r41608, r41609, r41610, r41611, r41612, r41613, r41614, r41615, r41616, r41617, r41618, r41619, r41620, r41621, r41622, r41623, r41624;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41601);
        mpfr_init_set_str(r41602, "-5.273243369695188e-34", 10, MPFR_RNDN);
        mpfr_init(r41603);
        mpfr_init(r41604);
        mpfr_init(r41605);
        mpfr_init(r41606);
        mpfr_init(r41607);
        mpfr_init(r41608);
        mpfr_init(r41609);
        mpfr_init(r41610);
        mpfr_init(r41611);
        mpfr_init_set_str(r41612, "3.833302372270341e-33", 10, MPFR_RNDN);
        mpfr_init(r41613);
        mpfr_init(r41614);
        mpfr_init(r41615);
        mpfr_init(r41616);
        mpfr_init(r41617);
        mpfr_init(r41618);
        mpfr_init(r41619);
        mpfr_init(r41620);
        mpfr_init(r41621);
        mpfr_init(r41622);
        mpfr_init(r41623);
        mpfr_init(r41624);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41601, a, MPFR_RNDN);
        ;
        mpfr_set_si(r41603, mpfr_cmp(r41601, r41602) <= 0, MPFR_RNDN);
        mpfr_set_d(r41604, x, MPFR_RNDN);
        mpfr_set_d(r41605, y, MPFR_RNDN);
        mpfr_set_d(r41606, z, MPFR_RNDN);
        mpfr_set_d(r41607, t, MPFR_RNDN);
        mpfr_sub(r41608, r41606, r41607, MPFR_RNDN);
        mpfr_div(r41609, r41601, r41608, MPFR_RNDN);
        mpfr_div(r41610, r41605, r41609, MPFR_RNDN);
        mpfr_sub(r41611, r41604, r41610, MPFR_RNDN);
        ;
        mpfr_set_si(r41613, mpfr_cmp(r41601, r41612) <= 0, MPFR_RNDN);
        mpfr_mul(r41614, r41605, r41608, MPFR_RNDN);
        mpfr_div(r41615, r41614, r41601, MPFR_RNDN);
        mpfr_sub(r41616, r41604, r41615, MPFR_RNDN);
        mpfr_div(r41617, r41605, r41601, MPFR_RNDN);
        mpfr_mul(r41618, r41617, r41606, MPFR_RNDN);
        mpfr_neg(r41619, r41607, MPFR_RNDN);
        mpfr_mul(r41620, r41617, r41619, MPFR_RNDN);
        mpfr_add(r41621, r41618, r41620, MPFR_RNDN);
        mpfr_sub(r41622, r41604, r41621, MPFR_RNDN);
        if (mpfr_get_si(r41613, MPFR_RNDN)) { mpfr_set(r41623, r41616, MPFR_RNDN); } else { mpfr_set(r41623, r41622, MPFR_RNDN); };
        if (mpfr_get_si(r41603, MPFR_RNDN)) { mpfr_set(r41624, r41611, MPFR_RNDN); } else { mpfr_set(r41624, r41623, MPFR_RNDN); };
        return mpfr_get_d(r41624, MPFR_RNDN);
}

static mpfr_t r41625, r41626, r41627, r41628, r41629, r41630, r41631, r41632, r41633, r41634, r41635, r41636, r41637, r41638, r41639, r41640, r41641, r41642, r41643, r41644, r41645, r41646, r41647, r41648;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41625);
        mpfr_init_set_str(r41626, "-5.273243369695188e-34", 10, MPFR_RNDN);
        mpfr_init(r41627);
        mpfr_init(r41628);
        mpfr_init(r41629);
        mpfr_init(r41630);
        mpfr_init(r41631);
        mpfr_init(r41632);
        mpfr_init(r41633);
        mpfr_init(r41634);
        mpfr_init(r41635);
        mpfr_init_set_str(r41636, "3.833302372270341e-33", 10, MPFR_RNDN);
        mpfr_init(r41637);
        mpfr_init(r41638);
        mpfr_init(r41639);
        mpfr_init(r41640);
        mpfr_init(r41641);
        mpfr_init(r41642);
        mpfr_init(r41643);
        mpfr_init(r41644);
        mpfr_init(r41645);
        mpfr_init(r41646);
        mpfr_init(r41647);
        mpfr_init(r41648);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41625, a, MPFR_RNDN);
        ;
        mpfr_set_si(r41627, mpfr_cmp(r41625, r41626) <= 0, MPFR_RNDN);
        mpfr_set_d(r41628, x, MPFR_RNDN);
        mpfr_set_d(r41629, y, MPFR_RNDN);
        mpfr_set_d(r41630, z, MPFR_RNDN);
        mpfr_set_d(r41631, t, MPFR_RNDN);
        mpfr_sub(r41632, r41630, r41631, MPFR_RNDN);
        mpfr_div(r41633, r41625, r41632, MPFR_RNDN);
        mpfr_div(r41634, r41629, r41633, MPFR_RNDN);
        mpfr_sub(r41635, r41628, r41634, MPFR_RNDN);
        ;
        mpfr_set_si(r41637, mpfr_cmp(r41625, r41636) <= 0, MPFR_RNDN);
        mpfr_mul(r41638, r41629, r41632, MPFR_RNDN);
        mpfr_div(r41639, r41638, r41625, MPFR_RNDN);
        mpfr_sub(r41640, r41628, r41639, MPFR_RNDN);
        mpfr_div(r41641, r41629, r41625, MPFR_RNDN);
        mpfr_mul(r41642, r41641, r41630, MPFR_RNDN);
        mpfr_neg(r41643, r41631, MPFR_RNDN);
        mpfr_mul(r41644, r41641, r41643, MPFR_RNDN);
        mpfr_add(r41645, r41642, r41644, MPFR_RNDN);
        mpfr_sub(r41646, r41628, r41645, MPFR_RNDN);
        if (mpfr_get_si(r41637, MPFR_RNDN)) { mpfr_set(r41647, r41640, MPFR_RNDN); } else { mpfr_set(r41647, r41646, MPFR_RNDN); };
        if (mpfr_get_si(r41627, MPFR_RNDN)) { mpfr_set(r41648, r41635, MPFR_RNDN); } else { mpfr_set(r41648, r41647, MPFR_RNDN); };
        return mpfr_get_d(r41648, MPFR_RNDN);
}

