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

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

double f_if(float x, float y, float z) {
        float r52779 = x;
        float r52780 = y;
        float r52781 = r52780 * r52780;
        float r52782 = z;
        float r52783 = r52782 * r52782;
        float r52784 = r52781 - r52783;
        float r52785 = sqrt(r52784);
        float r52786 = r52779 * r52785;
        return r52786;
}

double f_id(double x, double y, double z) {
        double r52787 = x;
        double r52788 = y;
        double r52789 = r52788 * r52788;
        double r52790 = z;
        double r52791 = r52790 * r52790;
        double r52792 = r52789 - r52791;
        double r52793 = sqrt(r52792);
        double r52794 = r52787 * r52793;
        return r52794;
}


double f_of(float x, float y, float __attribute__((unused)) z) {
        float r52795 = y;
        float r52796 = 1.5622464906955437e-289;
        bool r52797 = r52795 <= r52796;
        float r52798 = x;
        float r52799 = -r52798;
        float r52800 = r52795 * r52799;
        float r52801 = r52798 * r52795;
        float r52802 = r52797 ? r52800 : r52801;
        return r52802;
}

double f_od(double x, double y, double __attribute__((unused)) z) {
        double r52803 = y;
        double r52804 = 1.5622464906955437e-289;
        bool r52805 = r52803 <= r52804;
        double r52806 = x;
        double r52807 = -r52806;
        double r52808 = r52803 * r52807;
        double r52809 = r52806 * r52803;
        double r52810 = r52805 ? r52808 : r52809;
        return r52810;
}

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 r52811, r52812, r52813, r52814, r52815, r52816, r52817, r52818;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52811);
        mpfr_init(r52812);
        mpfr_init(r52813);
        mpfr_init(r52814);
        mpfr_init(r52815);
        mpfr_init(r52816);
        mpfr_init(r52817);
        mpfr_init(r52818);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52811, x, MPFR_RNDN);
        mpfr_set_d(r52812, y, MPFR_RNDN);
        mpfr_mul(r52813, r52812, r52812, MPFR_RNDN);
        mpfr_set_d(r52814, z, MPFR_RNDN);
        mpfr_mul(r52815, r52814, r52814, MPFR_RNDN);
        mpfr_sub(r52816, r52813, r52815, MPFR_RNDN);
        mpfr_sqrt(r52817, r52816, MPFR_RNDN);
        mpfr_mul(r52818, r52811, r52817, MPFR_RNDN);
        return mpfr_get_d(r52818, MPFR_RNDN);
}

static mpfr_t r52819, r52820, r52821, r52822, r52823, r52824, r52825, r52826;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52819);
        mpfr_init_set_str(r52820, "1.5622464906955437e-289", 10, MPFR_RNDN);
        mpfr_init(r52821);
        mpfr_init(r52822);
        mpfr_init(r52823);
        mpfr_init(r52824);
        mpfr_init(r52825);
        mpfr_init(r52826);
}

double f_fm(double x, double y, double __attribute__((unused)) z) {
        mpfr_set_d(r52819, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52821, mpfr_cmp(r52819, r52820) <= 0, MPFR_RNDN);
        mpfr_set_d(r52822, x, MPFR_RNDN);
        mpfr_neg(r52823, r52822, MPFR_RNDN);
        mpfr_mul(r52824, r52819, r52823, MPFR_RNDN);
        mpfr_mul(r52825, r52822, r52819, MPFR_RNDN);
        if (mpfr_get_si(r52821, MPFR_RNDN)) { mpfr_set(r52826, r52824, MPFR_RNDN); } else { mpfr_set(r52826, r52825, MPFR_RNDN); };
        return mpfr_get_d(r52826, MPFR_RNDN);
}

static mpfr_t r52827, r52828, r52829, r52830, r52831, r52832, r52833, r52834;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52827);
        mpfr_init_set_str(r52828, "1.5622464906955437e-289", 10, MPFR_RNDN);
        mpfr_init(r52829);
        mpfr_init(r52830);
        mpfr_init(r52831);
        mpfr_init(r52832);
        mpfr_init(r52833);
        mpfr_init(r52834);
}

double f_dm(double x, double y, double __attribute__((unused)) z) {
        mpfr_set_d(r52827, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52829, mpfr_cmp(r52827, r52828) <= 0, MPFR_RNDN);
        mpfr_set_d(r52830, x, MPFR_RNDN);
        mpfr_neg(r52831, r52830, MPFR_RNDN);
        mpfr_mul(r52832, r52827, r52831, MPFR_RNDN);
        mpfr_mul(r52833, r52830, r52827, MPFR_RNDN);
        if (mpfr_get_si(r52829, MPFR_RNDN)) { mpfr_set(r52834, r52832, MPFR_RNDN); } else { mpfr_set(r52834, r52833, MPFR_RNDN); };
        return mpfr_get_d(r52834, MPFR_RNDN);
}

