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

double f_if(float x, float y, float z, float t, float a) {
        float r41316 = x;
        float r41317 = y;
        float r41318 = z;
        float r41319 = t;
        float r41320 = r41318 - r41319;
        float r41321 = r41317 * r41320;
        float r41322 = a;
        float r41323 = r41321 / r41322;
        float r41324 = r41316 + r41323;
        return r41324;
}

double f_id(double x, double y, double z, double t, double a) {
        double r41325 = x;
        double r41326 = y;
        double r41327 = z;
        double r41328 = t;
        double r41329 = r41327 - r41328;
        double r41330 = r41326 * r41329;
        double r41331 = a;
        double r41332 = r41330 / r41331;
        double r41333 = r41325 + r41332;
        return r41333;
}


double f_of(float x, float y, float z, float t, float a) {
        float r41334 = a;
        float r41335 = -5.273243369695188e-34;
        bool r41336 = r41334 <= r41335;
        float r41337 = x;
        float r41338 = y;
        float r41339 = z;
        float r41340 = t;
        float r41341 = r41339 - r41340;
        float r41342 = r41334 / r41341;
        float r41343 = r41338 / r41342;
        float r41344 = r41337 + r41343;
        float r41345 = 3.833302372270341e-33;
        bool r41346 = r41334 <= r41345;
        float r41347 = r41338 * r41341;
        float r41348 = r41347 / r41334;
        float r41349 = r41337 + r41348;
        float r41350 = r41338 / r41334;
        float r41351 = r41341 * r41350;
        float r41352 = r41351 + r41337;
        float r41353 = r41346 ? r41349 : r41352;
        float r41354 = r41336 ? r41344 : r41353;
        return r41354;
}

double f_od(double x, double y, double z, double t, double a) {
        double r41355 = a;
        double r41356 = -5.273243369695188e-34;
        bool r41357 = r41355 <= r41356;
        double r41358 = x;
        double r41359 = y;
        double r41360 = z;
        double r41361 = t;
        double r41362 = r41360 - r41361;
        double r41363 = r41355 / r41362;
        double r41364 = r41359 / r41363;
        double r41365 = r41358 + r41364;
        double r41366 = 3.833302372270341e-33;
        bool r41367 = r41355 <= r41366;
        double r41368 = r41359 * r41362;
        double r41369 = r41368 / r41355;
        double r41370 = r41358 + r41369;
        double r41371 = r41359 / r41355;
        double r41372 = r41362 * r41371;
        double r41373 = r41372 + r41358;
        double r41374 = r41367 ? r41370 : r41373;
        double r41375 = r41357 ? r41365 : r41374;
        return r41375;
}

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 r41376, r41377, r41378, r41379, r41380, r41381, r41382, r41383, r41384;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41376);
        mpfr_init(r41377);
        mpfr_init(r41378);
        mpfr_init(r41379);
        mpfr_init(r41380);
        mpfr_init(r41381);
        mpfr_init(r41382);
        mpfr_init(r41383);
        mpfr_init(r41384);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41376, x, MPFR_RNDN);
        mpfr_set_d(r41377, y, MPFR_RNDN);
        mpfr_set_d(r41378, z, MPFR_RNDN);
        mpfr_set_d(r41379, t, MPFR_RNDN);
        mpfr_sub(r41380, r41378, r41379, MPFR_RNDN);
        mpfr_mul(r41381, r41377, r41380, MPFR_RNDN);
        mpfr_set_d(r41382, a, MPFR_RNDN);
        mpfr_div(r41383, r41381, r41382, MPFR_RNDN);
        mpfr_add(r41384, r41376, r41383, MPFR_RNDN);
        return mpfr_get_d(r41384, MPFR_RNDN);
}

static mpfr_t r41385, r41386, r41387, r41388, r41389, r41390, r41391, r41392, r41393, r41394, r41395, r41396, r41397, r41398, r41399, r41400, r41401, r41402, r41403, r41404, r41405;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41385);
        mpfr_init_set_str(r41386, "-5.273243369695188e-34", 10, MPFR_RNDN);
        mpfr_init(r41387);
        mpfr_init(r41388);
        mpfr_init(r41389);
        mpfr_init(r41390);
        mpfr_init(r41391);
        mpfr_init(r41392);
        mpfr_init(r41393);
        mpfr_init(r41394);
        mpfr_init(r41395);
        mpfr_init_set_str(r41396, "3.833302372270341e-33", 10, MPFR_RNDN);
        mpfr_init(r41397);
        mpfr_init(r41398);
        mpfr_init(r41399);
        mpfr_init(r41400);
        mpfr_init(r41401);
        mpfr_init(r41402);
        mpfr_init(r41403);
        mpfr_init(r41404);
        mpfr_init(r41405);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41385, a, MPFR_RNDN);
        ;
        mpfr_set_si(r41387, mpfr_cmp(r41385, r41386) <= 0, MPFR_RNDN);
        mpfr_set_d(r41388, x, MPFR_RNDN);
        mpfr_set_d(r41389, y, MPFR_RNDN);
        mpfr_set_d(r41390, z, MPFR_RNDN);
        mpfr_set_d(r41391, t, MPFR_RNDN);
        mpfr_sub(r41392, r41390, r41391, MPFR_RNDN);
        mpfr_div(r41393, r41385, r41392, MPFR_RNDN);
        mpfr_div(r41394, r41389, r41393, MPFR_RNDN);
        mpfr_add(r41395, r41388, r41394, MPFR_RNDN);
        ;
        mpfr_set_si(r41397, mpfr_cmp(r41385, r41396) <= 0, MPFR_RNDN);
        mpfr_mul(r41398, r41389, r41392, MPFR_RNDN);
        mpfr_div(r41399, r41398, r41385, MPFR_RNDN);
        mpfr_add(r41400, r41388, r41399, MPFR_RNDN);
        mpfr_div(r41401, r41389, r41385, MPFR_RNDN);
        mpfr_mul(r41402, r41392, r41401, MPFR_RNDN);
        mpfr_add(r41403, r41402, r41388, MPFR_RNDN);
        if (mpfr_get_si(r41397, MPFR_RNDN)) { mpfr_set(r41404, r41400, MPFR_RNDN); } else { mpfr_set(r41404, r41403, MPFR_RNDN); };
        if (mpfr_get_si(r41387, MPFR_RNDN)) { mpfr_set(r41405, r41395, MPFR_RNDN); } else { mpfr_set(r41405, r41404, MPFR_RNDN); };
        return mpfr_get_d(r41405, MPFR_RNDN);
}

static mpfr_t r41406, r41407, r41408, r41409, r41410, r41411, r41412, r41413, r41414, r41415, r41416, r41417, r41418, r41419, r41420, r41421, r41422, r41423, r41424, r41425, r41426;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41406);
        mpfr_init_set_str(r41407, "-5.273243369695188e-34", 10, MPFR_RNDN);
        mpfr_init(r41408);
        mpfr_init(r41409);
        mpfr_init(r41410);
        mpfr_init(r41411);
        mpfr_init(r41412);
        mpfr_init(r41413);
        mpfr_init(r41414);
        mpfr_init(r41415);
        mpfr_init(r41416);
        mpfr_init_set_str(r41417, "3.833302372270341e-33", 10, MPFR_RNDN);
        mpfr_init(r41418);
        mpfr_init(r41419);
        mpfr_init(r41420);
        mpfr_init(r41421);
        mpfr_init(r41422);
        mpfr_init(r41423);
        mpfr_init(r41424);
        mpfr_init(r41425);
        mpfr_init(r41426);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41406, a, MPFR_RNDN);
        ;
        mpfr_set_si(r41408, mpfr_cmp(r41406, r41407) <= 0, MPFR_RNDN);
        mpfr_set_d(r41409, x, MPFR_RNDN);
        mpfr_set_d(r41410, y, MPFR_RNDN);
        mpfr_set_d(r41411, z, MPFR_RNDN);
        mpfr_set_d(r41412, t, MPFR_RNDN);
        mpfr_sub(r41413, r41411, r41412, MPFR_RNDN);
        mpfr_div(r41414, r41406, r41413, MPFR_RNDN);
        mpfr_div(r41415, r41410, r41414, MPFR_RNDN);
        mpfr_add(r41416, r41409, r41415, MPFR_RNDN);
        ;
        mpfr_set_si(r41418, mpfr_cmp(r41406, r41417) <= 0, MPFR_RNDN);
        mpfr_mul(r41419, r41410, r41413, MPFR_RNDN);
        mpfr_div(r41420, r41419, r41406, MPFR_RNDN);
        mpfr_add(r41421, r41409, r41420, MPFR_RNDN);
        mpfr_div(r41422, r41410, r41406, MPFR_RNDN);
        mpfr_mul(r41423, r41413, r41422, MPFR_RNDN);
        mpfr_add(r41424, r41423, r41409, MPFR_RNDN);
        if (mpfr_get_si(r41418, MPFR_RNDN)) { mpfr_set(r41425, r41421, MPFR_RNDN); } else { mpfr_set(r41425, r41424, MPFR_RNDN); };
        if (mpfr_get_si(r41408, MPFR_RNDN)) { mpfr_set(r41426, r41416, MPFR_RNDN); } else { mpfr_set(r41426, r41425, MPFR_RNDN); };
        return mpfr_get_d(r41426, MPFR_RNDN);
}

