#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 r52538 = 2.0;
        float r52539 = x;
        float r52540 = y;
        float r52541 = r52539 * r52540;
        float r52542 = z;
        float r52543 = r52539 * r52542;
        float r52544 = r52541 + r52543;
        float r52545 = r52540 * r52542;
        float r52546 = r52544 + r52545;
        float r52547 = sqrt(r52546);
        float r52548 = r52538 * r52547;
        return r52548;
}

double f_id(double x, double y, double z) {
        double r52549 = 2.0;
        double r52550 = x;
        double r52551 = y;
        double r52552 = r52550 * r52551;
        double r52553 = z;
        double r52554 = r52550 * r52553;
        double r52555 = r52552 + r52554;
        double r52556 = r52551 * r52553;
        double r52557 = r52555 + r52556;
        double r52558 = sqrt(r52557);
        double r52559 = r52549 * r52558;
        return r52559;
}


double f_of(float x, float y, float z) {
        float r52560 = x;
        float r52561 = z;
        float r52562 = y;
        float r52563 = r52561 + r52562;
        float r52564 = r52560 * r52563;
        float r52565 = r52562 * r52561;
        float r52566 = r52564 + r52565;
        float r52567 = sqrt(r52566);
        float r52568 = 2.0;
        float r52569 = r52567 * r52568;
        return r52569;
}

double f_od(double x, double y, double z) {
        double r52570 = x;
        double r52571 = z;
        double r52572 = y;
        double r52573 = r52571 + r52572;
        double r52574 = r52570 * r52573;
        double r52575 = r52572 * r52571;
        double r52576 = r52574 + r52575;
        double r52577 = sqrt(r52576);
        double r52578 = 2.0;
        double r52579 = r52577 * r52578;
        return r52579;
}

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 r52580, r52581, r52582, r52583, r52584, r52585, r52586, r52587, r52588, r52589, r52590;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52580, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52581);
        mpfr_init(r52582);
        mpfr_init(r52583);
        mpfr_init(r52584);
        mpfr_init(r52585);
        mpfr_init(r52586);
        mpfr_init(r52587);
        mpfr_init(r52588);
        mpfr_init(r52589);
        mpfr_init(r52590);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r52581, x, MPFR_RNDN);
        mpfr_set_d(r52582, y, MPFR_RNDN);
        mpfr_mul(r52583, r52581, r52582, MPFR_RNDN);
        mpfr_set_d(r52584, z, MPFR_RNDN);
        mpfr_mul(r52585, r52581, r52584, MPFR_RNDN);
        mpfr_add(r52586, r52583, r52585, MPFR_RNDN);
        mpfr_mul(r52587, r52582, r52584, MPFR_RNDN);
        mpfr_add(r52588, r52586, r52587, MPFR_RNDN);
        mpfr_sqrt(r52589, r52588, MPFR_RNDN);
        mpfr_mul(r52590, r52580, r52589, MPFR_RNDN);
        return mpfr_get_d(r52590, MPFR_RNDN);
}

static mpfr_t r52591, r52592, r52593, r52594, r52595, r52596, r52597, r52598, r52599, r52600;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52591);
        mpfr_init(r52592);
        mpfr_init(r52593);
        mpfr_init(r52594);
        mpfr_init(r52595);
        mpfr_init(r52596);
        mpfr_init(r52597);
        mpfr_init(r52598);
        mpfr_init_set_str(r52599, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52600);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52591, x, MPFR_RNDN);
        mpfr_set_d(r52592, z, MPFR_RNDN);
        mpfr_set_d(r52593, y, MPFR_RNDN);
        mpfr_add(r52594, r52592, r52593, MPFR_RNDN);
        mpfr_mul(r52595, r52591, r52594, MPFR_RNDN);
        mpfr_mul(r52596, r52593, r52592, MPFR_RNDN);
        mpfr_add(r52597, r52595, r52596, MPFR_RNDN);
        mpfr_sqrt(r52598, r52597, MPFR_RNDN);
        ;
        mpfr_mul(r52600, r52598, r52599, MPFR_RNDN);
        return mpfr_get_d(r52600, MPFR_RNDN);
}

static mpfr_t r52601, r52602, r52603, r52604, r52605, r52606, r52607, r52608, r52609, r52610;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52601);
        mpfr_init(r52602);
        mpfr_init(r52603);
        mpfr_init(r52604);
        mpfr_init(r52605);
        mpfr_init(r52606);
        mpfr_init(r52607);
        mpfr_init(r52608);
        mpfr_init_set_str(r52609, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52610);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52601, x, MPFR_RNDN);
        mpfr_set_d(r52602, z, MPFR_RNDN);
        mpfr_set_d(r52603, y, MPFR_RNDN);
        mpfr_add(r52604, r52602, r52603, MPFR_RNDN);
        mpfr_mul(r52605, r52601, r52604, MPFR_RNDN);
        mpfr_mul(r52606, r52603, r52602, MPFR_RNDN);
        mpfr_add(r52607, r52605, r52606, MPFR_RNDN);
        mpfr_sqrt(r52608, r52607, MPFR_RNDN);
        ;
        mpfr_mul(r52610, r52608, r52609, MPFR_RNDN);
        return mpfr_get_d(r52610, MPFR_RNDN);
}

