#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 r52920 = 2.0;
        float r52921 = x;
        float r52922 = y;
        float r52923 = r52921 * r52922;
        float r52924 = z;
        float r52925 = r52921 * r52924;
        float r52926 = r52923 + r52925;
        float r52927 = r52922 * r52924;
        float r52928 = r52926 + r52927;
        float r52929 = sqrt(r52928);
        float r52930 = r52920 * r52929;
        return r52930;
}

double f_id(double x, double y, double z) {
        double r52931 = 2.0;
        double r52932 = x;
        double r52933 = y;
        double r52934 = r52932 * r52933;
        double r52935 = z;
        double r52936 = r52932 * r52935;
        double r52937 = r52934 + r52936;
        double r52938 = r52933 * r52935;
        double r52939 = r52937 + r52938;
        double r52940 = sqrt(r52939);
        double r52941 = r52931 * r52940;
        return r52941;
}


double f_of(float x, float y, float z) {
        float r52942 = x;
        float r52943 = z;
        float r52944 = y;
        float r52945 = r52943 + r52944;
        float r52946 = r52942 * r52945;
        float r52947 = r52944 * r52943;
        float r52948 = r52946 + r52947;
        float r52949 = sqrt(r52948);
        float r52950 = 2.0;
        float r52951 = r52949 * r52950;
        return r52951;
}

double f_od(double x, double y, double z) {
        double r52952 = x;
        double r52953 = z;
        double r52954 = y;
        double r52955 = r52953 + r52954;
        double r52956 = r52952 * r52955;
        double r52957 = r52954 * r52953;
        double r52958 = r52956 + r52957;
        double r52959 = sqrt(r52958);
        double r52960 = 2.0;
        double r52961 = r52959 * r52960;
        return r52961;
}

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 r52962, r52963, r52964, r52965, r52966, r52967, r52968, r52969, r52970, r52971, r52972;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52962, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52963);
        mpfr_init(r52964);
        mpfr_init(r52965);
        mpfr_init(r52966);
        mpfr_init(r52967);
        mpfr_init(r52968);
        mpfr_init(r52969);
        mpfr_init(r52970);
        mpfr_init(r52971);
        mpfr_init(r52972);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r52963, x, MPFR_RNDN);
        mpfr_set_d(r52964, y, MPFR_RNDN);
        mpfr_mul(r52965, r52963, r52964, MPFR_RNDN);
        mpfr_set_d(r52966, z, MPFR_RNDN);
        mpfr_mul(r52967, r52963, r52966, MPFR_RNDN);
        mpfr_add(r52968, r52965, r52967, MPFR_RNDN);
        mpfr_mul(r52969, r52964, r52966, MPFR_RNDN);
        mpfr_add(r52970, r52968, r52969, MPFR_RNDN);
        mpfr_sqrt(r52971, r52970, MPFR_RNDN);
        mpfr_mul(r52972, r52962, r52971, MPFR_RNDN);
        return mpfr_get_d(r52972, MPFR_RNDN);
}

static mpfr_t r52973, r52974, r52975, r52976, r52977, r52978, r52979, r52980, r52981, r52982;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52973);
        mpfr_init(r52974);
        mpfr_init(r52975);
        mpfr_init(r52976);
        mpfr_init(r52977);
        mpfr_init(r52978);
        mpfr_init(r52979);
        mpfr_init(r52980);
        mpfr_init_set_str(r52981, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52982);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52973, x, MPFR_RNDN);
        mpfr_set_d(r52974, z, MPFR_RNDN);
        mpfr_set_d(r52975, y, MPFR_RNDN);
        mpfr_add(r52976, r52974, r52975, MPFR_RNDN);
        mpfr_mul(r52977, r52973, r52976, MPFR_RNDN);
        mpfr_mul(r52978, r52975, r52974, MPFR_RNDN);
        mpfr_add(r52979, r52977, r52978, MPFR_RNDN);
        mpfr_sqrt(r52980, r52979, MPFR_RNDN);
        ;
        mpfr_mul(r52982, r52980, r52981, MPFR_RNDN);
        return mpfr_get_d(r52982, MPFR_RNDN);
}

static mpfr_t r52983, r52984, r52985, r52986, r52987, r52988, r52989, r52990, r52991, r52992;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52983);
        mpfr_init(r52984);
        mpfr_init(r52985);
        mpfr_init(r52986);
        mpfr_init(r52987);
        mpfr_init(r52988);
        mpfr_init(r52989);
        mpfr_init(r52990);
        mpfr_init_set_str(r52991, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52992);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52983, x, MPFR_RNDN);
        mpfr_set_d(r52984, z, MPFR_RNDN);
        mpfr_set_d(r52985, y, MPFR_RNDN);
        mpfr_add(r52986, r52984, r52985, MPFR_RNDN);
        mpfr_mul(r52987, r52983, r52986, MPFR_RNDN);
        mpfr_mul(r52988, r52985, r52984, MPFR_RNDN);
        mpfr_add(r52989, r52987, r52988, MPFR_RNDN);
        mpfr_sqrt(r52990, r52989, MPFR_RNDN);
        ;
        mpfr_mul(r52992, r52990, r52991, MPFR_RNDN);
        return mpfr_get_d(r52992, MPFR_RNDN);
}

