#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 r38100 = x;
        float r38101 = y;
        float r38102 = z;
        float r38103 = r38102 - r38100;
        float r38104 = r38101 * r38103;
        float r38105 = t;
        float r38106 = r38104 / r38105;
        float r38107 = r38100 + r38106;
        return r38107;
}

double f_id(double x, double y, double z, double t) {
        double r38108 = x;
        double r38109 = y;
        double r38110 = z;
        double r38111 = r38110 - r38108;
        double r38112 = r38109 * r38111;
        double r38113 = t;
        double r38114 = r38112 / r38113;
        double r38115 = r38108 + r38114;
        return r38115;
}


double f_of(float x, float y, float z, float t) {
        float r38116 = x;
        float r38117 = -1.3209176906660093e-170f;
        bool r38118 = r38116 <= r38117;
        float r38119 = z;
        float r38120 = r38119 - r38116;
        float r38121 = t;
        float r38122 = y;
        float r38123 = r38121 / r38122;
        float r38124 = r38120 / r38123;
        float r38125 = r38124 + r38116;
        float r38126 = 2.0581640871701446e-95f;
        bool r38127 = r38116 <= r38126;
        float r38128 = r38122 * r38120;
        float r38129 = r38128 / r38121;
        float r38130 = r38116 + r38129;
        float r38131 = r38122 / r38121;
        float r38132 = r38131 * r38120;
        float r38133 = r38132 + r38116;
        float r38134 = r38127 ? r38130 : r38133;
        float r38135 = r38118 ? r38125 : r38134;
        return r38135;
}

double f_od(double x, double y, double z, double t) {
        double r38136 = x;
        double r38137 = -1.3209176906660093e-170;
        bool r38138 = r38136 <= r38137;
        double r38139 = z;
        double r38140 = r38139 - r38136;
        double r38141 = t;
        double r38142 = y;
        double r38143 = r38141 / r38142;
        double r38144 = r38140 / r38143;
        double r38145 = r38144 + r38136;
        double r38146 = 2.0581640871701446e-95;
        bool r38147 = r38136 <= r38146;
        double r38148 = r38142 * r38140;
        double r38149 = r38148 / r38141;
        double r38150 = r38136 + r38149;
        double r38151 = r38142 / r38141;
        double r38152 = r38151 * r38140;
        double r38153 = r38152 + r38136;
        double r38154 = r38147 ? r38150 : r38153;
        double r38155 = r38138 ? r38145 : r38154;
        return r38155;
}

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 r38156, r38157, r38158, r38159, r38160, r38161, r38162, r38163;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r38156);
        mpfr_init(r38157);
        mpfr_init(r38158);
        mpfr_init(r38159);
        mpfr_init(r38160);
        mpfr_init(r38161);
        mpfr_init(r38162);
        mpfr_init(r38163);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r38156, x, MPFR_RNDN);
        mpfr_set_d(r38157, y, MPFR_RNDN);
        mpfr_set_d(r38158, z, MPFR_RNDN);
        mpfr_sub(r38159, r38158, r38156, MPFR_RNDN);
        mpfr_mul(r38160, r38157, r38159, MPFR_RNDN);
        mpfr_set_d(r38161, t, MPFR_RNDN);
        mpfr_div(r38162, r38160, r38161, MPFR_RNDN);
        mpfr_add(r38163, r38156, r38162, MPFR_RNDN);
        return mpfr_get_d(r38163, MPFR_RNDN);
}

static mpfr_t r38164, r38165, r38166, r38167, r38168, r38169, r38170, r38171, r38172, r38173, r38174, r38175, r38176, r38177, r38178, r38179, r38180, r38181, r38182, r38183;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r38164);
        mpfr_init_set_str(r38165, "-1.3209176906660093e-170", 10, MPFR_RNDN);
        mpfr_init(r38166);
        mpfr_init(r38167);
        mpfr_init(r38168);
        mpfr_init(r38169);
        mpfr_init(r38170);
        mpfr_init(r38171);
        mpfr_init(r38172);
        mpfr_init(r38173);
        mpfr_init_set_str(r38174, "2.0581640871701446e-95", 10, MPFR_RNDN);
        mpfr_init(r38175);
        mpfr_init(r38176);
        mpfr_init(r38177);
        mpfr_init(r38178);
        mpfr_init(r38179);
        mpfr_init(r38180);
        mpfr_init(r38181);
        mpfr_init(r38182);
        mpfr_init(r38183);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r38164, x, MPFR_RNDN);
        ;
        mpfr_set_si(r38166, mpfr_cmp(r38164, r38165) <= 0, MPFR_RNDN);
        mpfr_set_d(r38167, z, MPFR_RNDN);
        mpfr_sub(r38168, r38167, r38164, MPFR_RNDN);
        mpfr_set_d(r38169, t, MPFR_RNDN);
        mpfr_set_d(r38170, y, MPFR_RNDN);
        mpfr_div(r38171, r38169, r38170, MPFR_RNDN);
        mpfr_div(r38172, r38168, r38171, MPFR_RNDN);
        mpfr_add(r38173, r38172, r38164, MPFR_RNDN);
        ;
        mpfr_set_si(r38175, mpfr_cmp(r38164, r38174) <= 0, MPFR_RNDN);
        mpfr_mul(r38176, r38170, r38168, MPFR_RNDN);
        mpfr_div(r38177, r38176, r38169, MPFR_RNDN);
        mpfr_add(r38178, r38164, r38177, MPFR_RNDN);
        mpfr_div(r38179, r38170, r38169, MPFR_RNDN);
        mpfr_mul(r38180, r38179, r38168, MPFR_RNDN);
        mpfr_add(r38181, r38180, r38164, MPFR_RNDN);
        if (mpfr_get_si(r38175, MPFR_RNDN)) { mpfr_set(r38182, r38178, MPFR_RNDN); } else { mpfr_set(r38182, r38181, MPFR_RNDN); };
        if (mpfr_get_si(r38166, MPFR_RNDN)) { mpfr_set(r38183, r38173, MPFR_RNDN); } else { mpfr_set(r38183, r38182, MPFR_RNDN); };
        return mpfr_get_d(r38183, MPFR_RNDN);
}

static mpfr_t r38184, r38185, r38186, r38187, r38188, r38189, r38190, r38191, r38192, r38193, r38194, r38195, r38196, r38197, r38198, r38199, r38200, r38201, r38202, r38203;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r38184);
        mpfr_init_set_str(r38185, "-1.3209176906660093e-170", 10, MPFR_RNDN);
        mpfr_init(r38186);
        mpfr_init(r38187);
        mpfr_init(r38188);
        mpfr_init(r38189);
        mpfr_init(r38190);
        mpfr_init(r38191);
        mpfr_init(r38192);
        mpfr_init(r38193);
        mpfr_init_set_str(r38194, "2.0581640871701446e-95", 10, MPFR_RNDN);
        mpfr_init(r38195);
        mpfr_init(r38196);
        mpfr_init(r38197);
        mpfr_init(r38198);
        mpfr_init(r38199);
        mpfr_init(r38200);
        mpfr_init(r38201);
        mpfr_init(r38202);
        mpfr_init(r38203);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r38184, x, MPFR_RNDN);
        ;
        mpfr_set_si(r38186, mpfr_cmp(r38184, r38185) <= 0, MPFR_RNDN);
        mpfr_set_d(r38187, z, MPFR_RNDN);
        mpfr_sub(r38188, r38187, r38184, MPFR_RNDN);
        mpfr_set_d(r38189, t, MPFR_RNDN);
        mpfr_set_d(r38190, y, MPFR_RNDN);
        mpfr_div(r38191, r38189, r38190, MPFR_RNDN);
        mpfr_div(r38192, r38188, r38191, MPFR_RNDN);
        mpfr_add(r38193, r38192, r38184, MPFR_RNDN);
        ;
        mpfr_set_si(r38195, mpfr_cmp(r38184, r38194) <= 0, MPFR_RNDN);
        mpfr_mul(r38196, r38190, r38188, MPFR_RNDN);
        mpfr_div(r38197, r38196, r38189, MPFR_RNDN);
        mpfr_add(r38198, r38184, r38197, MPFR_RNDN);
        mpfr_div(r38199, r38190, r38189, MPFR_RNDN);
        mpfr_mul(r38200, r38199, r38188, MPFR_RNDN);
        mpfr_add(r38201, r38200, r38184, MPFR_RNDN);
        if (mpfr_get_si(r38195, MPFR_RNDN)) { mpfr_set(r38202, r38198, MPFR_RNDN); } else { mpfr_set(r38202, r38201, MPFR_RNDN); };
        if (mpfr_get_si(r38186, MPFR_RNDN)) { mpfr_set(r38203, r38193, MPFR_RNDN); } else { mpfr_set(r38203, r38202, MPFR_RNDN); };
        return mpfr_get_d(r38203, MPFR_RNDN);
}

