#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 r41343 = x;
        float r41344 = y;
        float r41345 = z;
        float r41346 = t;
        float r41347 = r41345 - r41346;
        float r41348 = r41344 * r41347;
        float r41349 = a;
        float r41350 = r41348 / r41349;
        float r41351 = r41343 - r41350;
        return r41351;
}

double f_id(double x, double y, double z, double t, double a) {
        double r41352 = x;
        double r41353 = y;
        double r41354 = z;
        double r41355 = t;
        double r41356 = r41354 - r41355;
        double r41357 = r41353 * r41356;
        double r41358 = a;
        double r41359 = r41357 / r41358;
        double r41360 = r41352 - r41359;
        return r41360;
}


double f_of(float x, float y, float z, float t, float a) {
        float r41361 = a;
        float r41362 = -1.6525860513176112e-34;
        bool r41363 = r41361 <= r41362;
        float r41364 = x;
        float r41365 = y;
        float r41366 = z;
        float r41367 = t;
        float r41368 = r41366 - r41367;
        float r41369 = r41361 / r41368;
        float r41370 = r41365 / r41369;
        float r41371 = r41364 - r41370;
        float r41372 = 6.557080249188682e-33;
        bool r41373 = r41361 <= r41372;
        float r41374 = r41365 * r41368;
        float r41375 = r41374 / r41361;
        float r41376 = r41364 - r41375;
        float r41377 = r41365 / r41361;
        float r41378 = r41377 * r41366;
        float r41379 = -r41367;
        float r41380 = r41377 * r41379;
        float r41381 = r41378 + r41380;
        float r41382 = r41364 - r41381;
        float r41383 = r41373 ? r41376 : r41382;
        float r41384 = r41363 ? r41371 : r41383;
        return r41384;
}

double f_od(double x, double y, double z, double t, double a) {
        double r41385 = a;
        double r41386 = -1.6525860513176112e-34;
        bool r41387 = r41385 <= r41386;
        double r41388 = x;
        double r41389 = y;
        double r41390 = z;
        double r41391 = t;
        double r41392 = r41390 - r41391;
        double r41393 = r41385 / r41392;
        double r41394 = r41389 / r41393;
        double r41395 = r41388 - r41394;
        double r41396 = 6.557080249188682e-33;
        bool r41397 = r41385 <= r41396;
        double r41398 = r41389 * r41392;
        double r41399 = r41398 / r41385;
        double r41400 = r41388 - r41399;
        double r41401 = r41389 / r41385;
        double r41402 = r41401 * r41390;
        double r41403 = -r41391;
        double r41404 = r41401 * r41403;
        double r41405 = r41402 + r41404;
        double r41406 = r41388 - r41405;
        double r41407 = r41397 ? r41400 : r41406;
        double r41408 = r41387 ? r41395 : r41407;
        return r41408;
}

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 r41409, r41410, r41411, r41412, r41413, r41414, r41415, r41416, r41417;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        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(r41417);
}

double f_im(double x, double y, double z, double t, double a) {
        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_mul(r41414, r41410, r41413, MPFR_RNDN);
        mpfr_set_d(r41415, a, MPFR_RNDN);
        mpfr_div(r41416, r41414, r41415, MPFR_RNDN);
        mpfr_sub(r41417, r41409, r41416, MPFR_RNDN);
        return mpfr_get_d(r41417, MPFR_RNDN);
}

static mpfr_t r41418, r41419, r41420, r41421, r41422, r41423, r41424, r41425, r41426, r41427, r41428, r41429, r41430, r41431, r41432, r41433, r41434, r41435, r41436, r41437, r41438, r41439, r41440, r41441;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41418);
        mpfr_init_set_str(r41419, "-1.6525860513176112e-34", 10, MPFR_RNDN);
        mpfr_init(r41420);
        mpfr_init(r41421);
        mpfr_init(r41422);
        mpfr_init(r41423);
        mpfr_init(r41424);
        mpfr_init(r41425);
        mpfr_init(r41426);
        mpfr_init(r41427);
        mpfr_init(r41428);
        mpfr_init_set_str(r41429, "6.557080249188682e-33", 10, MPFR_RNDN);
        mpfr_init(r41430);
        mpfr_init(r41431);
        mpfr_init(r41432);
        mpfr_init(r41433);
        mpfr_init(r41434);
        mpfr_init(r41435);
        mpfr_init(r41436);
        mpfr_init(r41437);
        mpfr_init(r41438);
        mpfr_init(r41439);
        mpfr_init(r41440);
        mpfr_init(r41441);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41418, a, MPFR_RNDN);
        ;
        mpfr_set_si(r41420, mpfr_cmp(r41418, r41419) <= 0, MPFR_RNDN);
        mpfr_set_d(r41421, x, MPFR_RNDN);
        mpfr_set_d(r41422, y, MPFR_RNDN);
        mpfr_set_d(r41423, z, MPFR_RNDN);
        mpfr_set_d(r41424, t, MPFR_RNDN);
        mpfr_sub(r41425, r41423, r41424, MPFR_RNDN);
        mpfr_div(r41426, r41418, r41425, MPFR_RNDN);
        mpfr_div(r41427, r41422, r41426, MPFR_RNDN);
        mpfr_sub(r41428, r41421, r41427, MPFR_RNDN);
        ;
        mpfr_set_si(r41430, mpfr_cmp(r41418, r41429) <= 0, MPFR_RNDN);
        mpfr_mul(r41431, r41422, r41425, MPFR_RNDN);
        mpfr_div(r41432, r41431, r41418, MPFR_RNDN);
        mpfr_sub(r41433, r41421, r41432, MPFR_RNDN);
        mpfr_div(r41434, r41422, r41418, MPFR_RNDN);
        mpfr_mul(r41435, r41434, r41423, MPFR_RNDN);
        mpfr_neg(r41436, r41424, MPFR_RNDN);
        mpfr_mul(r41437, r41434, r41436, MPFR_RNDN);
        mpfr_add(r41438, r41435, r41437, MPFR_RNDN);
        mpfr_sub(r41439, r41421, r41438, MPFR_RNDN);
        if (mpfr_get_si(r41430, MPFR_RNDN)) { mpfr_set(r41440, r41433, MPFR_RNDN); } else { mpfr_set(r41440, r41439, MPFR_RNDN); };
        if (mpfr_get_si(r41420, MPFR_RNDN)) { mpfr_set(r41441, r41428, MPFR_RNDN); } else { mpfr_set(r41441, r41440, MPFR_RNDN); };
        return mpfr_get_d(r41441, MPFR_RNDN);
}

static mpfr_t r41442, r41443, r41444, r41445, r41446, r41447, r41448, r41449, r41450, r41451, r41452, r41453, r41454, r41455, r41456, r41457, r41458, r41459, r41460, r41461, r41462, r41463, r41464, r41465;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41442);
        mpfr_init_set_str(r41443, "-1.6525860513176112e-34", 10, MPFR_RNDN);
        mpfr_init(r41444);
        mpfr_init(r41445);
        mpfr_init(r41446);
        mpfr_init(r41447);
        mpfr_init(r41448);
        mpfr_init(r41449);
        mpfr_init(r41450);
        mpfr_init(r41451);
        mpfr_init(r41452);
        mpfr_init_set_str(r41453, "6.557080249188682e-33", 10, MPFR_RNDN);
        mpfr_init(r41454);
        mpfr_init(r41455);
        mpfr_init(r41456);
        mpfr_init(r41457);
        mpfr_init(r41458);
        mpfr_init(r41459);
        mpfr_init(r41460);
        mpfr_init(r41461);
        mpfr_init(r41462);
        mpfr_init(r41463);
        mpfr_init(r41464);
        mpfr_init(r41465);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41442, a, MPFR_RNDN);
        ;
        mpfr_set_si(r41444, mpfr_cmp(r41442, r41443) <= 0, MPFR_RNDN);
        mpfr_set_d(r41445, x, MPFR_RNDN);
        mpfr_set_d(r41446, y, MPFR_RNDN);
        mpfr_set_d(r41447, z, MPFR_RNDN);
        mpfr_set_d(r41448, t, MPFR_RNDN);
        mpfr_sub(r41449, r41447, r41448, MPFR_RNDN);
        mpfr_div(r41450, r41442, r41449, MPFR_RNDN);
        mpfr_div(r41451, r41446, r41450, MPFR_RNDN);
        mpfr_sub(r41452, r41445, r41451, MPFR_RNDN);
        ;
        mpfr_set_si(r41454, mpfr_cmp(r41442, r41453) <= 0, MPFR_RNDN);
        mpfr_mul(r41455, r41446, r41449, MPFR_RNDN);
        mpfr_div(r41456, r41455, r41442, MPFR_RNDN);
        mpfr_sub(r41457, r41445, r41456, MPFR_RNDN);
        mpfr_div(r41458, r41446, r41442, MPFR_RNDN);
        mpfr_mul(r41459, r41458, r41447, MPFR_RNDN);
        mpfr_neg(r41460, r41448, MPFR_RNDN);
        mpfr_mul(r41461, r41458, r41460, MPFR_RNDN);
        mpfr_add(r41462, r41459, r41461, MPFR_RNDN);
        mpfr_sub(r41463, r41445, r41462, MPFR_RNDN);
        if (mpfr_get_si(r41454, MPFR_RNDN)) { mpfr_set(r41464, r41457, MPFR_RNDN); } else { mpfr_set(r41464, r41463, MPFR_RNDN); };
        if (mpfr_get_si(r41444, MPFR_RNDN)) { mpfr_set(r41465, r41452, MPFR_RNDN); } else { mpfr_set(r41465, r41464, MPFR_RNDN); };
        return mpfr_get_d(r41465, MPFR_RNDN);
}

