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

double f_if(float x, float y, float z) {
        float r52453 = x;
        float r52454 = r52453 * r52453;
        float r52455 = y;
        float r52456 = r52455 * r52455;
        float r52457 = r52454 + r52456;
        float r52458 = z;
        float r52459 = r52458 * r52458;
        float r52460 = r52457 - r52459;
        float r52461 = 2.0;
        float r52462 = r52455 * r52461;
        float r52463 = r52460 / r52462;
        return r52463;
}

double f_id(double x, double y, double z) {
        double r52464 = x;
        double r52465 = r52464 * r52464;
        double r52466 = y;
        double r52467 = r52466 * r52466;
        double r52468 = r52465 + r52467;
        double r52469 = z;
        double r52470 = r52469 * r52469;
        double r52471 = r52468 - r52470;
        double r52472 = 2.0;
        double r52473 = r52466 * r52472;
        double r52474 = r52471 / r52473;
        return r52474;
}


double f_of(float x, float y, float z) {
        float r52475 = 0.5;
        float r52476 = x;
        float r52477 = y;
        float r52478 = r52477 / r52476;
        float r52479 = r52476 / r52478;
        float r52480 = r52475 * r52479;
        float r52481 = r52475 * r52477;
        float r52482 = r52480 + r52481;
        float r52483 = z;
        float r52484 = r52477 / r52483;
        float r52485 = r52483 / r52484;
        float r52486 = r52475 * r52485;
        float r52487 = r52482 - r52486;
        return r52487;
}

double f_od(double x, double y, double z) {
        double r52488 = 0.5;
        double r52489 = x;
        double r52490 = y;
        double r52491 = r52490 / r52489;
        double r52492 = r52489 / r52491;
        double r52493 = r52488 * r52492;
        double r52494 = r52488 * r52490;
        double r52495 = r52493 + r52494;
        double r52496 = z;
        double r52497 = r52490 / r52496;
        double r52498 = r52496 / r52497;
        double r52499 = r52488 * r52498;
        double r52500 = r52495 - r52499;
        return r52500;
}

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 r52501, r52502, r52503, r52504, r52505, r52506, r52507, r52508, r52509, r52510, r52511;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52501);
        mpfr_init(r52502);
        mpfr_init(r52503);
        mpfr_init(r52504);
        mpfr_init(r52505);
        mpfr_init(r52506);
        mpfr_init(r52507);
        mpfr_init(r52508);
        mpfr_init_set_str(r52509, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52510);
        mpfr_init(r52511);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52501, x, MPFR_RNDN);
        mpfr_mul(r52502, r52501, r52501, MPFR_RNDN);
        mpfr_set_d(r52503, y, MPFR_RNDN);
        mpfr_mul(r52504, r52503, r52503, MPFR_RNDN);
        mpfr_add(r52505, r52502, r52504, MPFR_RNDN);
        mpfr_set_d(r52506, z, MPFR_RNDN);
        mpfr_mul(r52507, r52506, r52506, MPFR_RNDN);
        mpfr_sub(r52508, r52505, r52507, MPFR_RNDN);
        ;
        mpfr_mul(r52510, r52503, r52509, MPFR_RNDN);
        mpfr_div(r52511, r52508, r52510, MPFR_RNDN);
        return mpfr_get_d(r52511, MPFR_RNDN);
}

static mpfr_t r52512, r52513, r52514, r52515, r52516, r52517, r52518, r52519, r52520, r52521, r52522, r52523, r52524;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52512, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52513);
        mpfr_init(r52514);
        mpfr_init(r52515);
        mpfr_init(r52516);
        mpfr_init(r52517);
        mpfr_init(r52518);
        mpfr_init(r52519);
        mpfr_init(r52520);
        mpfr_init(r52521);
        mpfr_init(r52522);
        mpfr_init(r52523);
        mpfr_init(r52524);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r52513, x, MPFR_RNDN);
        mpfr_set_d(r52514, y, MPFR_RNDN);
        mpfr_div(r52515, r52514, r52513, MPFR_RNDN);
        mpfr_div(r52516, r52513, r52515, MPFR_RNDN);
        mpfr_mul(r52517, r52512, r52516, MPFR_RNDN);
        mpfr_mul(r52518, r52512, r52514, MPFR_RNDN);
        mpfr_add(r52519, r52517, r52518, MPFR_RNDN);
        mpfr_set_d(r52520, z, MPFR_RNDN);
        mpfr_div(r52521, r52514, r52520, MPFR_RNDN);
        mpfr_div(r52522, r52520, r52521, MPFR_RNDN);
        mpfr_mul(r52523, r52512, r52522, MPFR_RNDN);
        mpfr_sub(r52524, r52519, r52523, MPFR_RNDN);
        return mpfr_get_d(r52524, MPFR_RNDN);
}

static mpfr_t r52525, r52526, r52527, r52528, r52529, r52530, r52531, r52532, r52533, r52534, r52535, r52536, r52537;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52525, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52526);
        mpfr_init(r52527);
        mpfr_init(r52528);
        mpfr_init(r52529);
        mpfr_init(r52530);
        mpfr_init(r52531);
        mpfr_init(r52532);
        mpfr_init(r52533);
        mpfr_init(r52534);
        mpfr_init(r52535);
        mpfr_init(r52536);
        mpfr_init(r52537);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r52526, x, MPFR_RNDN);
        mpfr_set_d(r52527, y, MPFR_RNDN);
        mpfr_div(r52528, r52527, r52526, MPFR_RNDN);
        mpfr_div(r52529, r52526, r52528, MPFR_RNDN);
        mpfr_mul(r52530, r52525, r52529, MPFR_RNDN);
        mpfr_mul(r52531, r52525, r52527, MPFR_RNDN);
        mpfr_add(r52532, r52530, r52531, MPFR_RNDN);
        mpfr_set_d(r52533, z, MPFR_RNDN);
        mpfr_div(r52534, r52527, r52533, MPFR_RNDN);
        mpfr_div(r52535, r52533, r52534, MPFR_RNDN);
        mpfr_mul(r52536, r52525, r52535, MPFR_RNDN);
        mpfr_sub(r52537, r52532, r52536, MPFR_RNDN);
        return mpfr_get_d(r52537, MPFR_RNDN);
}

