#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 r52415 = x;
        float r52416 = r52415 * r52415;
        float r52417 = y;
        float r52418 = r52417 * r52417;
        float r52419 = r52416 + r52418;
        float r52420 = z;
        float r52421 = r52420 * r52420;
        float r52422 = r52419 - r52421;
        float r52423 = 2.0;
        float r52424 = r52417 * r52423;
        float r52425 = r52422 / r52424;
        return r52425;
}

double f_id(double x, double y, double z) {
        double r52426 = x;
        double r52427 = r52426 * r52426;
        double r52428 = y;
        double r52429 = r52428 * r52428;
        double r52430 = r52427 + r52429;
        double r52431 = z;
        double r52432 = r52431 * r52431;
        double r52433 = r52430 - r52432;
        double r52434 = 2.0;
        double r52435 = r52428 * r52434;
        double r52436 = r52433 / r52435;
        return r52436;
}


double f_of(float x, float y, float z) {
        float r52437 = 0.5;
        float r52438 = x;
        float r52439 = y;
        float r52440 = r52439 / r52438;
        float r52441 = r52438 / r52440;
        float r52442 = r52437 * r52441;
        float r52443 = r52437 * r52439;
        float r52444 = r52442 + r52443;
        float r52445 = z;
        float r52446 = r52439 / r52445;
        float r52447 = r52445 / r52446;
        float r52448 = r52437 * r52447;
        float r52449 = r52444 - r52448;
        return r52449;
}

double f_od(double x, double y, double z) {
        double r52450 = 0.5;
        double r52451 = x;
        double r52452 = y;
        double r52453 = r52452 / r52451;
        double r52454 = r52451 / r52453;
        double r52455 = r52450 * r52454;
        double r52456 = r52450 * r52452;
        double r52457 = r52455 + r52456;
        double r52458 = z;
        double r52459 = r52452 / r52458;
        double r52460 = r52458 / r52459;
        double r52461 = r52450 * r52460;
        double r52462 = r52457 - r52461;
        return r52462;
}

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 r52463, r52464, r52465, r52466, r52467, r52468, r52469, r52470, r52471, r52472, r52473;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52463);
        mpfr_init(r52464);
        mpfr_init(r52465);
        mpfr_init(r52466);
        mpfr_init(r52467);
        mpfr_init(r52468);
        mpfr_init(r52469);
        mpfr_init(r52470);
        mpfr_init_set_str(r52471, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52472);
        mpfr_init(r52473);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52463, x, MPFR_RNDN);
        mpfr_mul(r52464, r52463, r52463, MPFR_RNDN);
        mpfr_set_d(r52465, y, MPFR_RNDN);
        mpfr_mul(r52466, r52465, r52465, MPFR_RNDN);
        mpfr_add(r52467, r52464, r52466, MPFR_RNDN);
        mpfr_set_d(r52468, z, MPFR_RNDN);
        mpfr_mul(r52469, r52468, r52468, MPFR_RNDN);
        mpfr_sub(r52470, r52467, r52469, MPFR_RNDN);
        ;
        mpfr_mul(r52472, r52465, r52471, MPFR_RNDN);
        mpfr_div(r52473, r52470, r52472, MPFR_RNDN);
        return mpfr_get_d(r52473, MPFR_RNDN);
}

static mpfr_t r52474, r52475, r52476, r52477, r52478, r52479, r52480, r52481, r52482, r52483, r52484, r52485, r52486;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52474, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52475);
        mpfr_init(r52476);
        mpfr_init(r52477);
        mpfr_init(r52478);
        mpfr_init(r52479);
        mpfr_init(r52480);
        mpfr_init(r52481);
        mpfr_init(r52482);
        mpfr_init(r52483);
        mpfr_init(r52484);
        mpfr_init(r52485);
        mpfr_init(r52486);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r52475, x, MPFR_RNDN);
        mpfr_set_d(r52476, y, MPFR_RNDN);
        mpfr_div(r52477, r52476, r52475, MPFR_RNDN);
        mpfr_div(r52478, r52475, r52477, MPFR_RNDN);
        mpfr_mul(r52479, r52474, r52478, MPFR_RNDN);
        mpfr_mul(r52480, r52474, r52476, MPFR_RNDN);
        mpfr_add(r52481, r52479, r52480, MPFR_RNDN);
        mpfr_set_d(r52482, z, MPFR_RNDN);
        mpfr_div(r52483, r52476, r52482, MPFR_RNDN);
        mpfr_div(r52484, r52482, r52483, MPFR_RNDN);
        mpfr_mul(r52485, r52474, r52484, MPFR_RNDN);
        mpfr_sub(r52486, r52481, r52485, MPFR_RNDN);
        return mpfr_get_d(r52486, MPFR_RNDN);
}

static mpfr_t r52487, r52488, r52489, r52490, r52491, r52492, r52493, r52494, r52495, r52496, r52497, r52498, r52499;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52487, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52488);
        mpfr_init(r52489);
        mpfr_init(r52490);
        mpfr_init(r52491);
        mpfr_init(r52492);
        mpfr_init(r52493);
        mpfr_init(r52494);
        mpfr_init(r52495);
        mpfr_init(r52496);
        mpfr_init(r52497);
        mpfr_init(r52498);
        mpfr_init(r52499);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r52488, x, MPFR_RNDN);
        mpfr_set_d(r52489, y, MPFR_RNDN);
        mpfr_div(r52490, r52489, r52488, MPFR_RNDN);
        mpfr_div(r52491, r52488, r52490, MPFR_RNDN);
        mpfr_mul(r52492, r52487, r52491, MPFR_RNDN);
        mpfr_mul(r52493, r52487, r52489, MPFR_RNDN);
        mpfr_add(r52494, r52492, r52493, MPFR_RNDN);
        mpfr_set_d(r52495, z, MPFR_RNDN);
        mpfr_div(r52496, r52489, r52495, MPFR_RNDN);
        mpfr_div(r52497, r52495, r52496, MPFR_RNDN);
        mpfr_mul(r52498, r52487, r52497, MPFR_RNDN);
        mpfr_sub(r52499, r52494, r52498, MPFR_RNDN);
        return mpfr_get_d(r52499, MPFR_RNDN);
}

