#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 r52647 = x;
        float r52648 = r52647 * r52647;
        float r52649 = y;
        float r52650 = r52649 * r52649;
        float r52651 = r52648 + r52650;
        float r52652 = z;
        float r52653 = r52652 * r52652;
        float r52654 = r52651 - r52653;
        float r52655 = 2.0;
        float r52656 = r52649 * r52655;
        float r52657 = r52654 / r52656;
        return r52657;
}

double f_id(double x, double y, double z) {
        double r52658 = x;
        double r52659 = r52658 * r52658;
        double r52660 = y;
        double r52661 = r52660 * r52660;
        double r52662 = r52659 + r52661;
        double r52663 = z;
        double r52664 = r52663 * r52663;
        double r52665 = r52662 - r52664;
        double r52666 = 2.0;
        double r52667 = r52660 * r52666;
        double r52668 = r52665 / r52667;
        return r52668;
}


double f_of(float x, float y, float z) {
        float r52669 = 0.5;
        float r52670 = x;
        float r52671 = y;
        float r52672 = r52671 / r52670;
        float r52673 = r52670 / r52672;
        float r52674 = r52669 * r52673;
        float r52675 = r52669 * r52671;
        float r52676 = r52674 + r52675;
        float r52677 = z;
        float r52678 = r52671 / r52677;
        float r52679 = r52677 / r52678;
        float r52680 = r52669 * r52679;
        float r52681 = r52676 - r52680;
        return r52681;
}

double f_od(double x, double y, double z) {
        double r52682 = 0.5;
        double r52683 = x;
        double r52684 = y;
        double r52685 = r52684 / r52683;
        double r52686 = r52683 / r52685;
        double r52687 = r52682 * r52686;
        double r52688 = r52682 * r52684;
        double r52689 = r52687 + r52688;
        double r52690 = z;
        double r52691 = r52684 / r52690;
        double r52692 = r52690 / r52691;
        double r52693 = r52682 * r52692;
        double r52694 = r52689 - r52693;
        return r52694;
}

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 r52695, r52696, r52697, r52698, r52699, r52700, r52701, r52702, r52703, r52704, r52705;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52695);
        mpfr_init(r52696);
        mpfr_init(r52697);
        mpfr_init(r52698);
        mpfr_init(r52699);
        mpfr_init(r52700);
        mpfr_init(r52701);
        mpfr_init(r52702);
        mpfr_init_set_str(r52703, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52704);
        mpfr_init(r52705);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52695, x, MPFR_RNDN);
        mpfr_mul(r52696, r52695, r52695, MPFR_RNDN);
        mpfr_set_d(r52697, y, MPFR_RNDN);
        mpfr_mul(r52698, r52697, r52697, MPFR_RNDN);
        mpfr_add(r52699, r52696, r52698, MPFR_RNDN);
        mpfr_set_d(r52700, z, MPFR_RNDN);
        mpfr_mul(r52701, r52700, r52700, MPFR_RNDN);
        mpfr_sub(r52702, r52699, r52701, MPFR_RNDN);
        ;
        mpfr_mul(r52704, r52697, r52703, MPFR_RNDN);
        mpfr_div(r52705, r52702, r52704, MPFR_RNDN);
        return mpfr_get_d(r52705, MPFR_RNDN);
}

static mpfr_t r52706, r52707, r52708, r52709, r52710, r52711, r52712, r52713, r52714, r52715, r52716, r52717, r52718;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52706, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52707);
        mpfr_init(r52708);
        mpfr_init(r52709);
        mpfr_init(r52710);
        mpfr_init(r52711);
        mpfr_init(r52712);
        mpfr_init(r52713);
        mpfr_init(r52714);
        mpfr_init(r52715);
        mpfr_init(r52716);
        mpfr_init(r52717);
        mpfr_init(r52718);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r52707, x, MPFR_RNDN);
        mpfr_set_d(r52708, y, MPFR_RNDN);
        mpfr_div(r52709, r52708, r52707, MPFR_RNDN);
        mpfr_div(r52710, r52707, r52709, MPFR_RNDN);
        mpfr_mul(r52711, r52706, r52710, MPFR_RNDN);
        mpfr_mul(r52712, r52706, r52708, MPFR_RNDN);
        mpfr_add(r52713, r52711, r52712, MPFR_RNDN);
        mpfr_set_d(r52714, z, MPFR_RNDN);
        mpfr_div(r52715, r52708, r52714, MPFR_RNDN);
        mpfr_div(r52716, r52714, r52715, MPFR_RNDN);
        mpfr_mul(r52717, r52706, r52716, MPFR_RNDN);
        mpfr_sub(r52718, r52713, r52717, MPFR_RNDN);
        return mpfr_get_d(r52718, MPFR_RNDN);
}

static mpfr_t r52719, r52720, r52721, r52722, r52723, r52724, r52725, r52726, r52727, r52728, r52729, r52730, r52731;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52719, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52720);
        mpfr_init(r52721);
        mpfr_init(r52722);
        mpfr_init(r52723);
        mpfr_init(r52724);
        mpfr_init(r52725);
        mpfr_init(r52726);
        mpfr_init(r52727);
        mpfr_init(r52728);
        mpfr_init(r52729);
        mpfr_init(r52730);
        mpfr_init(r52731);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r52720, x, MPFR_RNDN);
        mpfr_set_d(r52721, y, MPFR_RNDN);
        mpfr_div(r52722, r52721, r52720, MPFR_RNDN);
        mpfr_div(r52723, r52720, r52722, MPFR_RNDN);
        mpfr_mul(r52724, r52719, r52723, MPFR_RNDN);
        mpfr_mul(r52725, r52719, r52721, MPFR_RNDN);
        mpfr_add(r52726, r52724, r52725, MPFR_RNDN);
        mpfr_set_d(r52727, z, MPFR_RNDN);
        mpfr_div(r52728, r52721, r52727, MPFR_RNDN);
        mpfr_div(r52729, r52727, r52728, MPFR_RNDN);
        mpfr_mul(r52730, r52719, r52729, MPFR_RNDN);
        mpfr_sub(r52731, r52726, r52730, MPFR_RNDN);
        return mpfr_get_d(r52731, MPFR_RNDN);
}

