#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 r41427 = x;
        float r41428 = y;
        float r41429 = z;
        float r41430 = r41429 - r41427;
        float r41431 = r41428 * r41430;
        float r41432 = t;
        float r41433 = r41431 / r41432;
        float r41434 = r41427 + r41433;
        return r41434;
}

double f_id(double x, double y, double z, double t) {
        double r41435 = x;
        double r41436 = y;
        double r41437 = z;
        double r41438 = r41437 - r41435;
        double r41439 = r41436 * r41438;
        double r41440 = t;
        double r41441 = r41439 / r41440;
        double r41442 = r41435 + r41441;
        return r41442;
}


double f_of(float x, float y, float z, float t) {
        float r41443 = x;
        float r41444 = -3.325266212781834e-104;
        bool r41445 = r41443 <= r41444;
        float r41446 = z;
        float r41447 = r41446 - r41443;
        float r41448 = t;
        float r41449 = y;
        float r41450 = r41448 / r41449;
        float r41451 = r41447 / r41450;
        float r41452 = r41443 + r41451;
        float r41453 = -9.987366539497674e-252;
        bool r41454 = r41443 <= r41453;
        float r41455 = r41449 * r41447;
        float r41456 = r41455 / r41448;
        float r41457 = r41443 + r41456;
        float r41458 = r41454 ? r41457 : r41452;
        float r41459 = r41445 ? r41452 : r41458;
        return r41459;
}

double f_od(double x, double y, double z, double t) {
        double r41460 = x;
        double r41461 = -3.325266212781834e-104;
        bool r41462 = r41460 <= r41461;
        double r41463 = z;
        double r41464 = r41463 - r41460;
        double r41465 = t;
        double r41466 = y;
        double r41467 = r41465 / r41466;
        double r41468 = r41464 / r41467;
        double r41469 = r41460 + r41468;
        double r41470 = -9.987366539497674e-252;
        bool r41471 = r41460 <= r41470;
        double r41472 = r41466 * r41464;
        double r41473 = r41472 / r41465;
        double r41474 = r41460 + r41473;
        double r41475 = r41471 ? r41474 : r41469;
        double r41476 = r41462 ? r41469 : r41475;
        return r41476;
}

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 r41477, r41478, r41479, r41480, r41481, r41482, r41483, r41484;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41477);
        mpfr_init(r41478);
        mpfr_init(r41479);
        mpfr_init(r41480);
        mpfr_init(r41481);
        mpfr_init(r41482);
        mpfr_init(r41483);
        mpfr_init(r41484);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r41477, x, MPFR_RNDN);
        mpfr_set_d(r41478, y, MPFR_RNDN);
        mpfr_set_d(r41479, z, MPFR_RNDN);
        mpfr_sub(r41480, r41479, r41477, MPFR_RNDN);
        mpfr_mul(r41481, r41478, r41480, MPFR_RNDN);
        mpfr_set_d(r41482, t, MPFR_RNDN);
        mpfr_div(r41483, r41481, r41482, MPFR_RNDN);
        mpfr_add(r41484, r41477, r41483, MPFR_RNDN);
        return mpfr_get_d(r41484, MPFR_RNDN);
}

static mpfr_t r41485, r41486, r41487, r41488, r41489, r41490, r41491, r41492, r41493, r41494, r41495, r41496, r41497, r41498, r41499, r41500, r41501;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41485);
        mpfr_init_set_str(r41486, "-3.325266212781834e-104", 10, MPFR_RNDN);
        mpfr_init(r41487);
        mpfr_init(r41488);
        mpfr_init(r41489);
        mpfr_init(r41490);
        mpfr_init(r41491);
        mpfr_init(r41492);
        mpfr_init(r41493);
        mpfr_init(r41494);
        mpfr_init_set_str(r41495, "-9.987366539497674e-252", 10, MPFR_RNDN);
        mpfr_init(r41496);
        mpfr_init(r41497);
        mpfr_init(r41498);
        mpfr_init(r41499);
        mpfr_init(r41500);
        mpfr_init(r41501);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r41485, x, MPFR_RNDN);
        ;
        mpfr_set_si(r41487, mpfr_cmp(r41485, r41486) <= 0, MPFR_RNDN);
        mpfr_set_d(r41488, z, MPFR_RNDN);
        mpfr_sub(r41489, r41488, r41485, MPFR_RNDN);
        mpfr_set_d(r41490, t, MPFR_RNDN);
        mpfr_set_d(r41491, y, MPFR_RNDN);
        mpfr_div(r41492, r41490, r41491, MPFR_RNDN);
        mpfr_div(r41493, r41489, r41492, MPFR_RNDN);
        mpfr_add(r41494, r41485, r41493, MPFR_RNDN);
        ;
        mpfr_set_si(r41496, mpfr_cmp(r41485, r41495) <= 0, MPFR_RNDN);
        mpfr_mul(r41497, r41491, r41489, MPFR_RNDN);
        mpfr_div(r41498, r41497, r41490, MPFR_RNDN);
        mpfr_add(r41499, r41485, r41498, MPFR_RNDN);
        if (mpfr_get_si(r41496, MPFR_RNDN)) { mpfr_set(r41500, r41499, MPFR_RNDN); } else { mpfr_set(r41500, r41494, MPFR_RNDN); };
        if (mpfr_get_si(r41487, MPFR_RNDN)) { mpfr_set(r41501, r41494, MPFR_RNDN); } else { mpfr_set(r41501, r41500, MPFR_RNDN); };
        return mpfr_get_d(r41501, MPFR_RNDN);
}

static mpfr_t r41502, r41503, r41504, r41505, r41506, r41507, r41508, r41509, r41510, r41511, r41512, r41513, r41514, r41515, r41516, r41517, r41518;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41502);
        mpfr_init_set_str(r41503, "-3.325266212781834e-104", 10, MPFR_RNDN);
        mpfr_init(r41504);
        mpfr_init(r41505);
        mpfr_init(r41506);
        mpfr_init(r41507);
        mpfr_init(r41508);
        mpfr_init(r41509);
        mpfr_init(r41510);
        mpfr_init(r41511);
        mpfr_init_set_str(r41512, "-9.987366539497674e-252", 10, MPFR_RNDN);
        mpfr_init(r41513);
        mpfr_init(r41514);
        mpfr_init(r41515);
        mpfr_init(r41516);
        mpfr_init(r41517);
        mpfr_init(r41518);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r41502, x, MPFR_RNDN);
        ;
        mpfr_set_si(r41504, mpfr_cmp(r41502, r41503) <= 0, MPFR_RNDN);
        mpfr_set_d(r41505, z, MPFR_RNDN);
        mpfr_sub(r41506, r41505, r41502, MPFR_RNDN);
        mpfr_set_d(r41507, t, MPFR_RNDN);
        mpfr_set_d(r41508, y, MPFR_RNDN);
        mpfr_div(r41509, r41507, r41508, MPFR_RNDN);
        mpfr_div(r41510, r41506, r41509, MPFR_RNDN);
        mpfr_add(r41511, r41502, r41510, MPFR_RNDN);
        ;
        mpfr_set_si(r41513, mpfr_cmp(r41502, r41512) <= 0, MPFR_RNDN);
        mpfr_mul(r41514, r41508, r41506, MPFR_RNDN);
        mpfr_div(r41515, r41514, r41507, MPFR_RNDN);
        mpfr_add(r41516, r41502, r41515, MPFR_RNDN);
        if (mpfr_get_si(r41513, MPFR_RNDN)) { mpfr_set(r41517, r41516, MPFR_RNDN); } else { mpfr_set(r41517, r41511, MPFR_RNDN); };
        if (mpfr_get_si(r41504, MPFR_RNDN)) { mpfr_set(r41518, r41511, MPFR_RNDN); } else { mpfr_set(r41518, r41517, MPFR_RNDN); };
        return mpfr_get_d(r41518, MPFR_RNDN);
}

