#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, B";

double f_if(float x, float y, float z) {
        float r52359 = x;
        float r52360 = y;
        float r52361 = r52360 * r52360;
        float r52362 = z;
        float r52363 = r52362 * r52362;
        float r52364 = r52361 - r52363;
        float r52365 = sqrt(r52364);
        float r52366 = r52359 * r52365;
        return r52366;
}

double f_id(double x, double y, double z) {
        double r52367 = x;
        double r52368 = y;
        double r52369 = r52368 * r52368;
        double r52370 = z;
        double r52371 = r52370 * r52370;
        double r52372 = r52369 - r52371;
        double r52373 = sqrt(r52372);
        double r52374 = r52367 * r52373;
        return r52374;
}


double f_of(float x, float y, float __attribute__((unused)) z) {
        float r52375 = y;
        float r52376 = 1.5622464906955437e-289;
        bool r52377 = r52375 <= r52376;
        float r52378 = x;
        float r52379 = -r52378;
        float r52380 = r52375 * r52379;
        float r52381 = r52378 * r52375;
        float r52382 = r52377 ? r52380 : r52381;
        return r52382;
}

double f_od(double x, double y, double __attribute__((unused)) z) {
        double r52383 = y;
        double r52384 = 1.5622464906955437e-289;
        bool r52385 = r52383 <= r52384;
        double r52386 = x;
        double r52387 = -r52386;
        double r52388 = r52383 * r52387;
        double r52389 = r52386 * r52383;
        double r52390 = r52385 ? r52388 : r52389;
        return r52390;
}

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 r52391, r52392, r52393, r52394, r52395, r52396, r52397, r52398;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52391);
        mpfr_init(r52392);
        mpfr_init(r52393);
        mpfr_init(r52394);
        mpfr_init(r52395);
        mpfr_init(r52396);
        mpfr_init(r52397);
        mpfr_init(r52398);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52391, x, MPFR_RNDN);
        mpfr_set_d(r52392, y, MPFR_RNDN);
        mpfr_mul(r52393, r52392, r52392, MPFR_RNDN);
        mpfr_set_d(r52394, z, MPFR_RNDN);
        mpfr_mul(r52395, r52394, r52394, MPFR_RNDN);
        mpfr_sub(r52396, r52393, r52395, MPFR_RNDN);
        mpfr_sqrt(r52397, r52396, MPFR_RNDN);
        mpfr_mul(r52398, r52391, r52397, MPFR_RNDN);
        return mpfr_get_d(r52398, MPFR_RNDN);
}

static mpfr_t r52399, r52400, r52401, r52402, r52403, r52404, r52405, r52406;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52399);
        mpfr_init_set_str(r52400, "1.5622464906955437e-289", 10, MPFR_RNDN);
        mpfr_init(r52401);
        mpfr_init(r52402);
        mpfr_init(r52403);
        mpfr_init(r52404);
        mpfr_init(r52405);
        mpfr_init(r52406);
}

double f_fm(double x, double y, double __attribute__((unused)) z) {
        mpfr_set_d(r52399, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52401, mpfr_cmp(r52399, r52400) <= 0, MPFR_RNDN);
        mpfr_set_d(r52402, x, MPFR_RNDN);
        mpfr_neg(r52403, r52402, MPFR_RNDN);
        mpfr_mul(r52404, r52399, r52403, MPFR_RNDN);
        mpfr_mul(r52405, r52402, r52399, MPFR_RNDN);
        if (mpfr_get_si(r52401, MPFR_RNDN)) { mpfr_set(r52406, r52404, MPFR_RNDN); } else { mpfr_set(r52406, r52405, MPFR_RNDN); };
        return mpfr_get_d(r52406, MPFR_RNDN);
}

static mpfr_t r52407, r52408, r52409, r52410, r52411, r52412, r52413, r52414;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52407);
        mpfr_init_set_str(r52408, "1.5622464906955437e-289", 10, MPFR_RNDN);
        mpfr_init(r52409);
        mpfr_init(r52410);
        mpfr_init(r52411);
        mpfr_init(r52412);
        mpfr_init(r52413);
        mpfr_init(r52414);
}

double f_dm(double x, double y, double __attribute__((unused)) z) {
        mpfr_set_d(r52407, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52409, mpfr_cmp(r52407, r52408) <= 0, MPFR_RNDN);
        mpfr_set_d(r52410, x, MPFR_RNDN);
        mpfr_neg(r52411, r52410, MPFR_RNDN);
        mpfr_mul(r52412, r52407, r52411, MPFR_RNDN);
        mpfr_mul(r52413, r52410, r52407, MPFR_RNDN);
        if (mpfr_get_si(r52409, MPFR_RNDN)) { mpfr_set(r52414, r52412, MPFR_RNDN); } else { mpfr_set(r52414, r52413, MPFR_RNDN); };
        return mpfr_get_d(r52414, MPFR_RNDN);
}

