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

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

double f_if(float x, float y, float z) {
        float r52752 = 2.0;
        float r52753 = x;
        float r52754 = y;
        float r52755 = r52753 * r52754;
        float r52756 = z;
        float r52757 = r52753 * r52756;
        float r52758 = r52755 + r52757;
        float r52759 = r52754 * r52756;
        float r52760 = r52758 + r52759;
        float r52761 = sqrt(r52760);
        float r52762 = r52752 * r52761;
        return r52762;
}

double f_id(double x, double y, double z) {
        double r52763 = 2.0;
        double r52764 = x;
        double r52765 = y;
        double r52766 = r52764 * r52765;
        double r52767 = z;
        double r52768 = r52764 * r52767;
        double r52769 = r52766 + r52768;
        double r52770 = r52765 * r52767;
        double r52771 = r52769 + r52770;
        double r52772 = sqrt(r52771);
        double r52773 = r52763 * r52772;
        return r52773;
}


double f_of(float x, float y, float z) {
        float r52774 = x;
        float r52775 = z;
        float r52776 = y;
        float r52777 = r52775 + r52776;
        float r52778 = r52774 * r52777;
        float r52779 = r52776 * r52775;
        float r52780 = r52778 + r52779;
        float r52781 = sqrt(r52780);
        float r52782 = 2.0;
        float r52783 = r52781 * r52782;
        return r52783;
}

double f_od(double x, double y, double z) {
        double r52784 = x;
        double r52785 = z;
        double r52786 = y;
        double r52787 = r52785 + r52786;
        double r52788 = r52784 * r52787;
        double r52789 = r52786 * r52785;
        double r52790 = r52788 + r52789;
        double r52791 = sqrt(r52790);
        double r52792 = 2.0;
        double r52793 = r52791 * r52792;
        return r52793;
}

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 r52794, r52795, r52796, r52797, r52798, r52799, r52800, r52801, r52802, r52803, r52804;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52794, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52795);
        mpfr_init(r52796);
        mpfr_init(r52797);
        mpfr_init(r52798);
        mpfr_init(r52799);
        mpfr_init(r52800);
        mpfr_init(r52801);
        mpfr_init(r52802);
        mpfr_init(r52803);
        mpfr_init(r52804);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r52795, x, MPFR_RNDN);
        mpfr_set_d(r52796, y, MPFR_RNDN);
        mpfr_mul(r52797, r52795, r52796, MPFR_RNDN);
        mpfr_set_d(r52798, z, MPFR_RNDN);
        mpfr_mul(r52799, r52795, r52798, MPFR_RNDN);
        mpfr_add(r52800, r52797, r52799, MPFR_RNDN);
        mpfr_mul(r52801, r52796, r52798, MPFR_RNDN);
        mpfr_add(r52802, r52800, r52801, MPFR_RNDN);
        mpfr_sqrt(r52803, r52802, MPFR_RNDN);
        mpfr_mul(r52804, r52794, r52803, MPFR_RNDN);
        return mpfr_get_d(r52804, MPFR_RNDN);
}

static mpfr_t r52805, r52806, r52807, r52808, r52809, r52810, r52811, r52812, r52813, r52814;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52805);
        mpfr_init(r52806);
        mpfr_init(r52807);
        mpfr_init(r52808);
        mpfr_init(r52809);
        mpfr_init(r52810);
        mpfr_init(r52811);
        mpfr_init(r52812);
        mpfr_init_set_str(r52813, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52814);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52805, x, MPFR_RNDN);
        mpfr_set_d(r52806, z, MPFR_RNDN);
        mpfr_set_d(r52807, y, MPFR_RNDN);
        mpfr_add(r52808, r52806, r52807, MPFR_RNDN);
        mpfr_mul(r52809, r52805, r52808, MPFR_RNDN);
        mpfr_mul(r52810, r52807, r52806, MPFR_RNDN);
        mpfr_add(r52811, r52809, r52810, MPFR_RNDN);
        mpfr_sqrt(r52812, r52811, MPFR_RNDN);
        ;
        mpfr_mul(r52814, r52812, r52813, MPFR_RNDN);
        return mpfr_get_d(r52814, MPFR_RNDN);
}

static mpfr_t r52815, r52816, r52817, r52818, r52819, r52820, r52821, r52822, r52823, r52824;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52815);
        mpfr_init(r52816);
        mpfr_init(r52817);
        mpfr_init(r52818);
        mpfr_init(r52819);
        mpfr_init(r52820);
        mpfr_init(r52821);
        mpfr_init(r52822);
        mpfr_init_set_str(r52823, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52824);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52815, x, MPFR_RNDN);
        mpfr_set_d(r52816, z, MPFR_RNDN);
        mpfr_set_d(r52817, y, MPFR_RNDN);
        mpfr_add(r52818, r52816, r52817, MPFR_RNDN);
        mpfr_mul(r52819, r52815, r52818, MPFR_RNDN);
        mpfr_mul(r52820, r52817, r52816, MPFR_RNDN);
        mpfr_add(r52821, r52819, r52820, MPFR_RNDN);
        mpfr_sqrt(r52822, r52821, MPFR_RNDN);
        ;
        mpfr_mul(r52824, r52822, r52823, MPFR_RNDN);
        return mpfr_get_d(r52824, MPFR_RNDN);
}

