#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, D";

double f_if(float x, float y, float z, float t) {
        float r41585 = x;
        float r41586 = y;
        float r41587 = z;
        float r41588 = r41587 - r41585;
        float r41589 = r41586 * r41588;
        float r41590 = t;
        float r41591 = r41589 / r41590;
        float r41592 = r41585 + r41591;
        return r41592;
}

double f_id(double x, double y, double z, double t) {
        double r41593 = x;
        double r41594 = y;
        double r41595 = z;
        double r41596 = r41595 - r41593;
        double r41597 = r41594 * r41596;
        double r41598 = t;
        double r41599 = r41597 / r41598;
        double r41600 = r41593 + r41599;
        return r41600;
}


double f_of(float x, float y, float z, float t) {
        float r41601 = x;
        float r41602 = -6.906465135771799e-107;
        bool r41603 = r41601 <= r41602;
        float r41604 = z;
        float r41605 = r41604 - r41601;
        float r41606 = t;
        float r41607 = y;
        float r41608 = r41606 / r41607;
        float r41609 = r41605 / r41608;
        float r41610 = r41601 + r41609;
        float r41611 = -7.288444445623281e-258;
        bool r41612 = r41601 <= r41611;
        float r41613 = r41607 * r41605;
        float r41614 = r41613 / r41606;
        float r41615 = r41601 + r41614;
        float r41616 = r41612 ? r41615 : r41610;
        float r41617 = r41603 ? r41610 : r41616;
        return r41617;
}

double f_od(double x, double y, double z, double t) {
        double r41618 = x;
        double r41619 = -6.906465135771799e-107;
        bool r41620 = r41618 <= r41619;
        double r41621 = z;
        double r41622 = r41621 - r41618;
        double r41623 = t;
        double r41624 = y;
        double r41625 = r41623 / r41624;
        double r41626 = r41622 / r41625;
        double r41627 = r41618 + r41626;
        double r41628 = -7.288444445623281e-258;
        bool r41629 = r41618 <= r41628;
        double r41630 = r41624 * r41622;
        double r41631 = r41630 / r41623;
        double r41632 = r41618 + r41631;
        double r41633 = r41629 ? r41632 : r41627;
        double r41634 = r41620 ? r41627 : r41633;
        return r41634;
}

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 r41635, r41636, r41637, r41638, r41639, r41640, r41641, r41642;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41635);
        mpfr_init(r41636);
        mpfr_init(r41637);
        mpfr_init(r41638);
        mpfr_init(r41639);
        mpfr_init(r41640);
        mpfr_init(r41641);
        mpfr_init(r41642);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r41635, x, MPFR_RNDN);
        mpfr_set_d(r41636, y, MPFR_RNDN);
        mpfr_set_d(r41637, z, MPFR_RNDN);
        mpfr_sub(r41638, r41637, r41635, MPFR_RNDN);
        mpfr_mul(r41639, r41636, r41638, MPFR_RNDN);
        mpfr_set_d(r41640, t, MPFR_RNDN);
        mpfr_div(r41641, r41639, r41640, MPFR_RNDN);
        mpfr_add(r41642, r41635, r41641, MPFR_RNDN);
        return mpfr_get_d(r41642, MPFR_RNDN);
}

static mpfr_t r41643, r41644, r41645, r41646, r41647, r41648, r41649, r41650, r41651, r41652, r41653, r41654, r41655, r41656, r41657, r41658, r41659;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41643);
        mpfr_init_set_str(r41644, "-6.906465135771799e-107", 10, MPFR_RNDN);
        mpfr_init(r41645);
        mpfr_init(r41646);
        mpfr_init(r41647);
        mpfr_init(r41648);
        mpfr_init(r41649);
        mpfr_init(r41650);
        mpfr_init(r41651);
        mpfr_init(r41652);
        mpfr_init_set_str(r41653, "-7.288444445623281e-258", 10, MPFR_RNDN);
        mpfr_init(r41654);
        mpfr_init(r41655);
        mpfr_init(r41656);
        mpfr_init(r41657);
        mpfr_init(r41658);
        mpfr_init(r41659);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r41643, x, MPFR_RNDN);
        ;
        mpfr_set_si(r41645, mpfr_cmp(r41643, r41644) <= 0, MPFR_RNDN);
        mpfr_set_d(r41646, z, MPFR_RNDN);
        mpfr_sub(r41647, r41646, r41643, MPFR_RNDN);
        mpfr_set_d(r41648, t, MPFR_RNDN);
        mpfr_set_d(r41649, y, MPFR_RNDN);
        mpfr_div(r41650, r41648, r41649, MPFR_RNDN);
        mpfr_div(r41651, r41647, r41650, MPFR_RNDN);
        mpfr_add(r41652, r41643, r41651, MPFR_RNDN);
        ;
        mpfr_set_si(r41654, mpfr_cmp(r41643, r41653) <= 0, MPFR_RNDN);
        mpfr_mul(r41655, r41649, r41647, MPFR_RNDN);
        mpfr_div(r41656, r41655, r41648, MPFR_RNDN);
        mpfr_add(r41657, r41643, r41656, MPFR_RNDN);
        if (mpfr_get_si(r41654, MPFR_RNDN)) { mpfr_set(r41658, r41657, MPFR_RNDN); } else { mpfr_set(r41658, r41652, MPFR_RNDN); };
        if (mpfr_get_si(r41645, MPFR_RNDN)) { mpfr_set(r41659, r41652, MPFR_RNDN); } else { mpfr_set(r41659, r41658, MPFR_RNDN); };
        return mpfr_get_d(r41659, MPFR_RNDN);
}

static mpfr_t r41660, r41661, r41662, r41663, r41664, r41665, r41666, r41667, r41668, r41669, r41670, r41671, r41672, r41673, r41674, r41675, r41676;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41660);
        mpfr_init_set_str(r41661, "-6.906465135771799e-107", 10, MPFR_RNDN);
        mpfr_init(r41662);
        mpfr_init(r41663);
        mpfr_init(r41664);
        mpfr_init(r41665);
        mpfr_init(r41666);
        mpfr_init(r41667);
        mpfr_init(r41668);
        mpfr_init(r41669);
        mpfr_init_set_str(r41670, "-7.288444445623281e-258", 10, MPFR_RNDN);
        mpfr_init(r41671);
        mpfr_init(r41672);
        mpfr_init(r41673);
        mpfr_init(r41674);
        mpfr_init(r41675);
        mpfr_init(r41676);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r41660, x, MPFR_RNDN);
        ;
        mpfr_set_si(r41662, mpfr_cmp(r41660, r41661) <= 0, MPFR_RNDN);
        mpfr_set_d(r41663, z, MPFR_RNDN);
        mpfr_sub(r41664, r41663, r41660, MPFR_RNDN);
        mpfr_set_d(r41665, t, MPFR_RNDN);
        mpfr_set_d(r41666, y, MPFR_RNDN);
        mpfr_div(r41667, r41665, r41666, MPFR_RNDN);
        mpfr_div(r41668, r41664, r41667, MPFR_RNDN);
        mpfr_add(r41669, r41660, r41668, MPFR_RNDN);
        ;
        mpfr_set_si(r41671, mpfr_cmp(r41660, r41670) <= 0, MPFR_RNDN);
        mpfr_mul(r41672, r41666, r41664, MPFR_RNDN);
        mpfr_div(r41673, r41672, r41665, MPFR_RNDN);
        mpfr_add(r41674, r41660, r41673, MPFR_RNDN);
        if (mpfr_get_si(r41671, MPFR_RNDN)) { mpfr_set(r41675, r41674, MPFR_RNDN); } else { mpfr_set(r41675, r41669, MPFR_RNDN); };
        if (mpfr_get_si(r41662, MPFR_RNDN)) { mpfr_set(r41676, r41669, MPFR_RNDN); } else { mpfr_set(r41676, r41675, MPFR_RNDN); };
        return mpfr_get_d(r41676, MPFR_RNDN);
}

