#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 r51712 = x;
        float r51713 = r51712 * r51712;
        float r51714 = y;
        float r51715 = r51714 * r51714;
        float r51716 = r51713 + r51715;
        float r51717 = z;
        float r51718 = r51717 * r51717;
        float r51719 = r51716 - r51718;
        float r51720 = 2.0;
        float r51721 = r51714 * r51720;
        float r51722 = r51719 / r51721;
        return r51722;
}

double f_id(double x, double y, double z) {
        double r51723 = x;
        double r51724 = r51723 * r51723;
        double r51725 = y;
        double r51726 = r51725 * r51725;
        double r51727 = r51724 + r51726;
        double r51728 = z;
        double r51729 = r51728 * r51728;
        double r51730 = r51727 - r51729;
        double r51731 = 2.0;
        double r51732 = r51725 * r51731;
        double r51733 = r51730 / r51732;
        return r51733;
}


double f_of(float x, float y, float z) {
        float r51734 = 0.5;
        float r51735 = x;
        float r51736 = y;
        float r51737 = r51736 / r51735;
        float r51738 = r51735 / r51737;
        float r51739 = r51734 * r51738;
        float r51740 = r51734 * r51736;
        float r51741 = r51739 + r51740;
        float r51742 = z;
        float r51743 = r51736 / r51742;
        float r51744 = r51742 / r51743;
        float r51745 = r51734 * r51744;
        float r51746 = r51741 - r51745;
        return r51746;
}

double f_od(double x, double y, double z) {
        double r51747 = 0.5;
        double r51748 = x;
        double r51749 = y;
        double r51750 = r51749 / r51748;
        double r51751 = r51748 / r51750;
        double r51752 = r51747 * r51751;
        double r51753 = r51747 * r51749;
        double r51754 = r51752 + r51753;
        double r51755 = z;
        double r51756 = r51749 / r51755;
        double r51757 = r51755 / r51756;
        double r51758 = r51747 * r51757;
        double r51759 = r51754 - r51758;
        return r51759;
}

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 r51760, r51761, r51762, r51763, r51764, r51765, r51766, r51767, r51768, r51769, r51770;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51760);
        mpfr_init(r51761);
        mpfr_init(r51762);
        mpfr_init(r51763);
        mpfr_init(r51764);
        mpfr_init(r51765);
        mpfr_init(r51766);
        mpfr_init(r51767);
        mpfr_init_set_str(r51768, "2.0", 10, MPFR_RNDN);
        mpfr_init(r51769);
        mpfr_init(r51770);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51760, x, MPFR_RNDN);
        mpfr_mul(r51761, r51760, r51760, MPFR_RNDN);
        mpfr_set_d(r51762, y, MPFR_RNDN);
        mpfr_mul(r51763, r51762, r51762, MPFR_RNDN);
        mpfr_add(r51764, r51761, r51763, MPFR_RNDN);
        mpfr_set_d(r51765, z, MPFR_RNDN);
        mpfr_mul(r51766, r51765, r51765, MPFR_RNDN);
        mpfr_sub(r51767, r51764, r51766, MPFR_RNDN);
        ;
        mpfr_mul(r51769, r51762, r51768, MPFR_RNDN);
        mpfr_div(r51770, r51767, r51769, MPFR_RNDN);
        return mpfr_get_d(r51770, MPFR_RNDN);
}

static mpfr_t r51771, r51772, r51773, r51774, r51775, r51776, r51777, r51778, r51779, r51780, r51781, r51782, r51783;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51771, "0.5", 10, MPFR_RNDN);
        mpfr_init(r51772);
        mpfr_init(r51773);
        mpfr_init(r51774);
        mpfr_init(r51775);
        mpfr_init(r51776);
        mpfr_init(r51777);
        mpfr_init(r51778);
        mpfr_init(r51779);
        mpfr_init(r51780);
        mpfr_init(r51781);
        mpfr_init(r51782);
        mpfr_init(r51783);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r51772, x, MPFR_RNDN);
        mpfr_set_d(r51773, y, MPFR_RNDN);
        mpfr_div(r51774, r51773, r51772, MPFR_RNDN);
        mpfr_div(r51775, r51772, r51774, MPFR_RNDN);
        mpfr_mul(r51776, r51771, r51775, MPFR_RNDN);
        mpfr_mul(r51777, r51771, r51773, MPFR_RNDN);
        mpfr_add(r51778, r51776, r51777, MPFR_RNDN);
        mpfr_set_d(r51779, z, MPFR_RNDN);
        mpfr_div(r51780, r51773, r51779, MPFR_RNDN);
        mpfr_div(r51781, r51779, r51780, MPFR_RNDN);
        mpfr_mul(r51782, r51771, r51781, MPFR_RNDN);
        mpfr_sub(r51783, r51778, r51782, MPFR_RNDN);
        return mpfr_get_d(r51783, MPFR_RNDN);
}

static mpfr_t r51784, r51785, r51786, r51787, r51788, r51789, r51790, r51791, r51792, r51793, r51794, r51795, r51796;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51784, "0.5", 10, MPFR_RNDN);
        mpfr_init(r51785);
        mpfr_init(r51786);
        mpfr_init(r51787);
        mpfr_init(r51788);
        mpfr_init(r51789);
        mpfr_init(r51790);
        mpfr_init(r51791);
        mpfr_init(r51792);
        mpfr_init(r51793);
        mpfr_init(r51794);
        mpfr_init(r51795);
        mpfr_init(r51796);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r51785, x, MPFR_RNDN);
        mpfr_set_d(r51786, y, MPFR_RNDN);
        mpfr_div(r51787, r51786, r51785, MPFR_RNDN);
        mpfr_div(r51788, r51785, r51787, MPFR_RNDN);
        mpfr_mul(r51789, r51784, r51788, MPFR_RNDN);
        mpfr_mul(r51790, r51784, r51786, MPFR_RNDN);
        mpfr_add(r51791, r51789, r51790, MPFR_RNDN);
        mpfr_set_d(r51792, z, MPFR_RNDN);
        mpfr_div(r51793, r51786, r51792, MPFR_RNDN);
        mpfr_div(r51794, r51792, r51793, MPFR_RNDN);
        mpfr_mul(r51795, r51784, r51794, MPFR_RNDN);
        mpfr_sub(r51796, r51791, r51795, MPFR_RNDN);
        return mpfr_get_d(r51796, MPFR_RNDN);
}

