#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 r37862 = x;
        float r37863 = y;
        float r37864 = z;
        float r37865 = t;
        float r37866 = r37864 - r37865;
        float r37867 = r37863 * r37866;
        float r37868 = a;
        float r37869 = r37867 / r37868;
        float r37870 = r37862 - r37869;
        return r37870;
}

double f_id(double x, double y, double z, double t, double a) {
        double r37871 = x;
        double r37872 = y;
        double r37873 = z;
        double r37874 = t;
        double r37875 = r37873 - r37874;
        double r37876 = r37872 * r37875;
        double r37877 = a;
        double r37878 = r37876 / r37877;
        double r37879 = r37871 - r37878;
        return r37879;
}


double f_of(float x, float y, float z, float t, float a) {
        float r37880 = y;
        float r37881 = -2.930244047323321e+18f;
        bool r37882 = r37880 <= r37881;
        float r37883 = x;
        float r37884 = z;
        float r37885 = t;
        float r37886 = r37884 - r37885;
        float r37887 = a;
        float r37888 = r37886 / r37887;
        float r37889 = r37880 * r37888;
        float r37890 = r37883 - r37889;
        float r37891 = 8.166728288538418e-294f;
        bool r37892 = r37880 <= r37891;
        float r37893 = 1.0f;
        float r37894 = r37880 * r37886;
        float r37895 = r37887 / r37894;
        float r37896 = r37893 / r37895;
        float r37897 = r37883 - r37896;
        float r37898 = r37880 / r37887;
        float r37899 = r37898 * r37886;
        float r37900 = r37883 - r37899;
        float r37901 = r37892 ? r37897 : r37900;
        float r37902 = r37882 ? r37890 : r37901;
        return r37902;
}

double f_od(double x, double y, double z, double t, double a) {
        double r37903 = y;
        double r37904 = -2.930244047323321e+18;
        bool r37905 = r37903 <= r37904;
        double r37906 = x;
        double r37907 = z;
        double r37908 = t;
        double r37909 = r37907 - r37908;
        double r37910 = a;
        double r37911 = r37909 / r37910;
        double r37912 = r37903 * r37911;
        double r37913 = r37906 - r37912;
        double r37914 = 8.166728288538418e-294;
        bool r37915 = r37903 <= r37914;
        double r37916 = 1.0;
        double r37917 = r37903 * r37909;
        double r37918 = r37910 / r37917;
        double r37919 = r37916 / r37918;
        double r37920 = r37906 - r37919;
        double r37921 = r37903 / r37910;
        double r37922 = r37921 * r37909;
        double r37923 = r37906 - r37922;
        double r37924 = r37915 ? r37920 : r37923;
        double r37925 = r37905 ? r37913 : r37924;
        return r37925;
}

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 r37926, r37927, r37928, r37929, r37930, r37931, r37932, r37933, r37934;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r37926);
        mpfr_init(r37927);
        mpfr_init(r37928);
        mpfr_init(r37929);
        mpfr_init(r37930);
        mpfr_init(r37931);
        mpfr_init(r37932);
        mpfr_init(r37933);
        mpfr_init(r37934);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r37926, x, MPFR_RNDN);
        mpfr_set_d(r37927, y, MPFR_RNDN);
        mpfr_set_d(r37928, z, MPFR_RNDN);
        mpfr_set_d(r37929, t, MPFR_RNDN);
        mpfr_sub(r37930, r37928, r37929, MPFR_RNDN);
        mpfr_mul(r37931, r37927, r37930, MPFR_RNDN);
        mpfr_set_d(r37932, a, MPFR_RNDN);
        mpfr_div(r37933, r37931, r37932, MPFR_RNDN);
        mpfr_sub(r37934, r37926, r37933, MPFR_RNDN);
        return mpfr_get_d(r37934, MPFR_RNDN);
}

static mpfr_t r37935, r37936, r37937, r37938, r37939, r37940, r37941, r37942, r37943, r37944, r37945, r37946, r37947, r37948, r37949, r37950, r37951, r37952, r37953, r37954, r37955, r37956, r37957;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r37935);
        mpfr_init_set_str(r37936, "-2.930244047323321e+18", 10, MPFR_RNDN);
        mpfr_init(r37937);
        mpfr_init(r37938);
        mpfr_init(r37939);
        mpfr_init(r37940);
        mpfr_init(r37941);
        mpfr_init(r37942);
        mpfr_init(r37943);
        mpfr_init(r37944);
        mpfr_init(r37945);
        mpfr_init_set_str(r37946, "8.166728288538418e-294", 10, MPFR_RNDN);
        mpfr_init(r37947);
        mpfr_init_set_str(r37948, "1", 10, MPFR_RNDN);
        mpfr_init(r37949);
        mpfr_init(r37950);
        mpfr_init(r37951);
        mpfr_init(r37952);
        mpfr_init(r37953);
        mpfr_init(r37954);
        mpfr_init(r37955);
        mpfr_init(r37956);
        mpfr_init(r37957);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r37935, y, MPFR_RNDN);
        ;
        mpfr_set_si(r37937, mpfr_cmp(r37935, r37936) <= 0, MPFR_RNDN);
        mpfr_set_d(r37938, x, MPFR_RNDN);
        mpfr_set_d(r37939, z, MPFR_RNDN);
        mpfr_set_d(r37940, t, MPFR_RNDN);
        mpfr_sub(r37941, r37939, r37940, MPFR_RNDN);
        mpfr_set_d(r37942, a, MPFR_RNDN);
        mpfr_div(r37943, r37941, r37942, MPFR_RNDN);
        mpfr_mul(r37944, r37935, r37943, MPFR_RNDN);
        mpfr_sub(r37945, r37938, r37944, MPFR_RNDN);
        ;
        mpfr_set_si(r37947, mpfr_cmp(r37935, r37946) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r37949, r37935, r37941, MPFR_RNDN);
        mpfr_div(r37950, r37942, r37949, MPFR_RNDN);
        mpfr_div(r37951, r37948, r37950, MPFR_RNDN);
        mpfr_sub(r37952, r37938, r37951, MPFR_RNDN);
        mpfr_div(r37953, r37935, r37942, MPFR_RNDN);
        mpfr_mul(r37954, r37953, r37941, MPFR_RNDN);
        mpfr_sub(r37955, r37938, r37954, MPFR_RNDN);
        if (mpfr_get_si(r37947, MPFR_RNDN)) { mpfr_set(r37956, r37952, MPFR_RNDN); } else { mpfr_set(r37956, r37955, MPFR_RNDN); };
        if (mpfr_get_si(r37937, MPFR_RNDN)) { mpfr_set(r37957, r37945, MPFR_RNDN); } else { mpfr_set(r37957, r37956, MPFR_RNDN); };
        return mpfr_get_d(r37957, MPFR_RNDN);
}

static mpfr_t r37958, r37959, r37960, r37961, r37962, r37963, r37964, r37965, r37966, r37967, r37968, r37969, r37970, r37971, r37972, r37973, r37974, r37975, r37976, r37977, r37978, r37979, r37980;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r37958);
        mpfr_init_set_str(r37959, "-2.930244047323321e+18", 10, MPFR_RNDN);
        mpfr_init(r37960);
        mpfr_init(r37961);
        mpfr_init(r37962);
        mpfr_init(r37963);
        mpfr_init(r37964);
        mpfr_init(r37965);
        mpfr_init(r37966);
        mpfr_init(r37967);
        mpfr_init(r37968);
        mpfr_init_set_str(r37969, "8.166728288538418e-294", 10, MPFR_RNDN);
        mpfr_init(r37970);
        mpfr_init_set_str(r37971, "1", 10, MPFR_RNDN);
        mpfr_init(r37972);
        mpfr_init(r37973);
        mpfr_init(r37974);
        mpfr_init(r37975);
        mpfr_init(r37976);
        mpfr_init(r37977);
        mpfr_init(r37978);
        mpfr_init(r37979);
        mpfr_init(r37980);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r37958, y, MPFR_RNDN);
        ;
        mpfr_set_si(r37960, mpfr_cmp(r37958, r37959) <= 0, MPFR_RNDN);
        mpfr_set_d(r37961, x, MPFR_RNDN);
        mpfr_set_d(r37962, z, MPFR_RNDN);
        mpfr_set_d(r37963, t, MPFR_RNDN);
        mpfr_sub(r37964, r37962, r37963, MPFR_RNDN);
        mpfr_set_d(r37965, a, MPFR_RNDN);
        mpfr_div(r37966, r37964, r37965, MPFR_RNDN);
        mpfr_mul(r37967, r37958, r37966, MPFR_RNDN);
        mpfr_sub(r37968, r37961, r37967, MPFR_RNDN);
        ;
        mpfr_set_si(r37970, mpfr_cmp(r37958, r37969) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r37972, r37958, r37964, MPFR_RNDN);
        mpfr_div(r37973, r37965, r37972, MPFR_RNDN);
        mpfr_div(r37974, r37971, r37973, MPFR_RNDN);
        mpfr_sub(r37975, r37961, r37974, MPFR_RNDN);
        mpfr_div(r37976, r37958, r37965, MPFR_RNDN);
        mpfr_mul(r37977, r37976, r37964, MPFR_RNDN);
        mpfr_sub(r37978, r37961, r37977, MPFR_RNDN);
        if (mpfr_get_si(r37970, MPFR_RNDN)) { mpfr_set(r37979, r37975, MPFR_RNDN); } else { mpfr_set(r37979, r37978, MPFR_RNDN); };
        if (mpfr_get_si(r37960, MPFR_RNDN)) { mpfr_set(r37980, r37968, MPFR_RNDN); } else { mpfr_set(r37980, r37979, MPFR_RNDN); };
        return mpfr_get_d(r37980, MPFR_RNDN);
}

