#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 r52732 = 2.0;
        float r52733 = x;
        float r52734 = y;
        float r52735 = r52733 * r52734;
        float r52736 = z;
        float r52737 = r52733 * r52736;
        float r52738 = r52735 + r52737;
        float r52739 = r52734 * r52736;
        float r52740 = r52738 + r52739;
        float r52741 = sqrt(r52740);
        float r52742 = r52732 * r52741;
        return r52742;
}

double f_id(double x, double y, double z) {
        double r52743 = 2.0;
        double r52744 = x;
        double r52745 = y;
        double r52746 = r52744 * r52745;
        double r52747 = z;
        double r52748 = r52744 * r52747;
        double r52749 = r52746 + r52748;
        double r52750 = r52745 * r52747;
        double r52751 = r52749 + r52750;
        double r52752 = sqrt(r52751);
        double r52753 = r52743 * r52752;
        return r52753;
}


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

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

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 r52774, r52775, r52776, r52777, r52778, r52779, r52780, r52781, r52782, r52783, r52784;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52774, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52775);
        mpfr_init(r52776);
        mpfr_init(r52777);
        mpfr_init(r52778);
        mpfr_init(r52779);
        mpfr_init(r52780);
        mpfr_init(r52781);
        mpfr_init(r52782);
        mpfr_init(r52783);
        mpfr_init(r52784);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r52775, x, MPFR_RNDN);
        mpfr_set_d(r52776, y, MPFR_RNDN);
        mpfr_mul(r52777, r52775, r52776, MPFR_RNDN);
        mpfr_set_d(r52778, z, MPFR_RNDN);
        mpfr_mul(r52779, r52775, r52778, MPFR_RNDN);
        mpfr_add(r52780, r52777, r52779, MPFR_RNDN);
        mpfr_mul(r52781, r52776, r52778, MPFR_RNDN);
        mpfr_add(r52782, r52780, r52781, MPFR_RNDN);
        mpfr_sqrt(r52783, r52782, MPFR_RNDN);
        mpfr_mul(r52784, r52774, r52783, MPFR_RNDN);
        return mpfr_get_d(r52784, MPFR_RNDN);
}

static mpfr_t r52785, r52786, r52787, r52788, r52789, r52790, r52791, r52792, r52793, r52794;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52785);
        mpfr_init(r52786);
        mpfr_init(r52787);
        mpfr_init(r52788);
        mpfr_init(r52789);
        mpfr_init(r52790);
        mpfr_init(r52791);
        mpfr_init(r52792);
        mpfr_init_set_str(r52793, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52794);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52785, y, MPFR_RNDN);
        mpfr_set_d(r52786, x, MPFR_RNDN);
        mpfr_mul(r52787, r52785, r52786, MPFR_RNDN);
        mpfr_set_d(r52788, z, MPFR_RNDN);
        mpfr_add(r52789, r52786, r52785, MPFR_RNDN);
        mpfr_mul(r52790, r52788, r52789, MPFR_RNDN);
        mpfr_add(r52791, r52787, r52790, MPFR_RNDN);
        mpfr_sqrt(r52792, r52791, MPFR_RNDN);
        ;
        mpfr_mul(r52794, r52792, r52793, MPFR_RNDN);
        return mpfr_get_d(r52794, MPFR_RNDN);
}

static mpfr_t r52795, r52796, r52797, r52798, r52799, r52800, r52801, r52802, r52803, r52804;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        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_set_str(r52803, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52804);
}

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

