#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 r51797 = 2.0;
        float r51798 = x;
        float r51799 = y;
        float r51800 = r51798 * r51799;
        float r51801 = z;
        float r51802 = r51798 * r51801;
        float r51803 = r51800 + r51802;
        float r51804 = r51799 * r51801;
        float r51805 = r51803 + r51804;
        float r51806 = sqrt(r51805);
        float r51807 = r51797 * r51806;
        return r51807;
}

double f_id(double x, double y, double z) {
        double r51808 = 2.0;
        double r51809 = x;
        double r51810 = y;
        double r51811 = r51809 * r51810;
        double r51812 = z;
        double r51813 = r51809 * r51812;
        double r51814 = r51811 + r51813;
        double r51815 = r51810 * r51812;
        double r51816 = r51814 + r51815;
        double r51817 = sqrt(r51816);
        double r51818 = r51808 * r51817;
        return r51818;
}


double f_of(float x, float y, float z) {
        float r51819 = x;
        float r51820 = z;
        float r51821 = y;
        float r51822 = r51820 + r51821;
        float r51823 = r51819 * r51822;
        float r51824 = r51821 * r51820;
        float r51825 = r51823 + r51824;
        float r51826 = sqrt(r51825);
        float r51827 = 2.0;
        float r51828 = r51826 * r51827;
        return r51828;
}

double f_od(double x, double y, double z) {
        double r51829 = x;
        double r51830 = z;
        double r51831 = y;
        double r51832 = r51830 + r51831;
        double r51833 = r51829 * r51832;
        double r51834 = r51831 * r51830;
        double r51835 = r51833 + r51834;
        double r51836 = sqrt(r51835);
        double r51837 = 2.0;
        double r51838 = r51836 * r51837;
        return r51838;
}

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 r51839, r51840, r51841, r51842, r51843, r51844, r51845, r51846, r51847, r51848, r51849;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r51839, "2.0", 10, MPFR_RNDN);
        mpfr_init(r51840);
        mpfr_init(r51841);
        mpfr_init(r51842);
        mpfr_init(r51843);
        mpfr_init(r51844);
        mpfr_init(r51845);
        mpfr_init(r51846);
        mpfr_init(r51847);
        mpfr_init(r51848);
        mpfr_init(r51849);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r51840, x, MPFR_RNDN);
        mpfr_set_d(r51841, y, MPFR_RNDN);
        mpfr_mul(r51842, r51840, r51841, MPFR_RNDN);
        mpfr_set_d(r51843, z, MPFR_RNDN);
        mpfr_mul(r51844, r51840, r51843, MPFR_RNDN);
        mpfr_add(r51845, r51842, r51844, MPFR_RNDN);
        mpfr_mul(r51846, r51841, r51843, MPFR_RNDN);
        mpfr_add(r51847, r51845, r51846, MPFR_RNDN);
        mpfr_sqrt(r51848, r51847, MPFR_RNDN);
        mpfr_mul(r51849, r51839, r51848, MPFR_RNDN);
        return mpfr_get_d(r51849, MPFR_RNDN);
}

static mpfr_t r51850, r51851, r51852, r51853, r51854, r51855, r51856, r51857, r51858, r51859;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51850);
        mpfr_init(r51851);
        mpfr_init(r51852);
        mpfr_init(r51853);
        mpfr_init(r51854);
        mpfr_init(r51855);
        mpfr_init(r51856);
        mpfr_init(r51857);
        mpfr_init_set_str(r51858, "2.0", 10, MPFR_RNDN);
        mpfr_init(r51859);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51850, x, MPFR_RNDN);
        mpfr_set_d(r51851, z, MPFR_RNDN);
        mpfr_set_d(r51852, y, MPFR_RNDN);
        mpfr_add(r51853, r51851, r51852, MPFR_RNDN);
        mpfr_mul(r51854, r51850, r51853, MPFR_RNDN);
        mpfr_mul(r51855, r51852, r51851, MPFR_RNDN);
        mpfr_add(r51856, r51854, r51855, MPFR_RNDN);
        mpfr_sqrt(r51857, r51856, MPFR_RNDN);
        ;
        mpfr_mul(r51859, r51857, r51858, MPFR_RNDN);
        return mpfr_get_d(r51859, MPFR_RNDN);
}

static mpfr_t r51860, r51861, r51862, r51863, r51864, r51865, r51866, r51867, r51868, r51869;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51860);
        mpfr_init(r51861);
        mpfr_init(r51862);
        mpfr_init(r51863);
        mpfr_init(r51864);
        mpfr_init(r51865);
        mpfr_init(r51866);
        mpfr_init(r51867);
        mpfr_init_set_str(r51868, "2.0", 10, MPFR_RNDN);
        mpfr_init(r51869);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51860, x, MPFR_RNDN);
        mpfr_set_d(r51861, z, MPFR_RNDN);
        mpfr_set_d(r51862, y, MPFR_RNDN);
        mpfr_add(r51863, r51861, r51862, MPFR_RNDN);
        mpfr_mul(r51864, r51860, r51863, MPFR_RNDN);
        mpfr_mul(r51865, r51862, r51861, MPFR_RNDN);
        mpfr_add(r51866, r51864, r51865, MPFR_RNDN);
        mpfr_sqrt(r51867, r51866, MPFR_RNDN);
        ;
        mpfr_mul(r51869, r51867, r51868, MPFR_RNDN);
        return mpfr_get_d(r51869, MPFR_RNDN);
}

