#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, A";

double f_if(float x, float y, float z) {
        float r52835 = x;
        float r52836 = r52835 * r52835;
        float r52837 = y;
        float r52838 = r52837 * r52837;
        float r52839 = r52836 + r52838;
        float r52840 = z;
        float r52841 = r52840 * r52840;
        float r52842 = r52839 - r52841;
        float r52843 = 2.0;
        float r52844 = r52837 * r52843;
        float r52845 = r52842 / r52844;
        return r52845;
}

double f_id(double x, double y, double z) {
        double r52846 = x;
        double r52847 = r52846 * r52846;
        double r52848 = y;
        double r52849 = r52848 * r52848;
        double r52850 = r52847 + r52849;
        double r52851 = z;
        double r52852 = r52851 * r52851;
        double r52853 = r52850 - r52852;
        double r52854 = 2.0;
        double r52855 = r52848 * r52854;
        double r52856 = r52853 / r52855;
        return r52856;
}


double f_of(float x, float y, float z) {
        float r52857 = 0.5;
        float r52858 = x;
        float r52859 = y;
        float r52860 = r52859 / r52858;
        float r52861 = r52858 / r52860;
        float r52862 = r52857 * r52861;
        float r52863 = r52857 * r52859;
        float r52864 = r52862 + r52863;
        float r52865 = z;
        float r52866 = r52859 / r52865;
        float r52867 = r52865 / r52866;
        float r52868 = r52857 * r52867;
        float r52869 = r52864 - r52868;
        return r52869;
}

double f_od(double x, double y, double z) {
        double r52870 = 0.5;
        double r52871 = x;
        double r52872 = y;
        double r52873 = r52872 / r52871;
        double r52874 = r52871 / r52873;
        double r52875 = r52870 * r52874;
        double r52876 = r52870 * r52872;
        double r52877 = r52875 + r52876;
        double r52878 = z;
        double r52879 = r52872 / r52878;
        double r52880 = r52878 / r52879;
        double r52881 = r52870 * r52880;
        double r52882 = r52877 - r52881;
        return r52882;
}

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 r52883, r52884, r52885, r52886, r52887, r52888, r52889, r52890, r52891, r52892, r52893;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52883);
        mpfr_init(r52884);
        mpfr_init(r52885);
        mpfr_init(r52886);
        mpfr_init(r52887);
        mpfr_init(r52888);
        mpfr_init(r52889);
        mpfr_init(r52890);
        mpfr_init_set_str(r52891, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52892);
        mpfr_init(r52893);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52883, x, MPFR_RNDN);
        mpfr_mul(r52884, r52883, r52883, MPFR_RNDN);
        mpfr_set_d(r52885, y, MPFR_RNDN);
        mpfr_mul(r52886, r52885, r52885, MPFR_RNDN);
        mpfr_add(r52887, r52884, r52886, MPFR_RNDN);
        mpfr_set_d(r52888, z, MPFR_RNDN);
        mpfr_mul(r52889, r52888, r52888, MPFR_RNDN);
        mpfr_sub(r52890, r52887, r52889, MPFR_RNDN);
        ;
        mpfr_mul(r52892, r52885, r52891, MPFR_RNDN);
        mpfr_div(r52893, r52890, r52892, MPFR_RNDN);
        return mpfr_get_d(r52893, MPFR_RNDN);
}

static mpfr_t r52894, r52895, r52896, r52897, r52898, r52899, r52900, r52901, r52902, r52903, r52904, r52905, r52906;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52894, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52895);
        mpfr_init(r52896);
        mpfr_init(r52897);
        mpfr_init(r52898);
        mpfr_init(r52899);
        mpfr_init(r52900);
        mpfr_init(r52901);
        mpfr_init(r52902);
        mpfr_init(r52903);
        mpfr_init(r52904);
        mpfr_init(r52905);
        mpfr_init(r52906);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r52895, x, MPFR_RNDN);
        mpfr_set_d(r52896, y, MPFR_RNDN);
        mpfr_div(r52897, r52896, r52895, MPFR_RNDN);
        mpfr_div(r52898, r52895, r52897, MPFR_RNDN);
        mpfr_mul(r52899, r52894, r52898, MPFR_RNDN);
        mpfr_mul(r52900, r52894, r52896, MPFR_RNDN);
        mpfr_add(r52901, r52899, r52900, MPFR_RNDN);
        mpfr_set_d(r52902, z, MPFR_RNDN);
        mpfr_div(r52903, r52896, r52902, MPFR_RNDN);
        mpfr_div(r52904, r52902, r52903, MPFR_RNDN);
        mpfr_mul(r52905, r52894, r52904, MPFR_RNDN);
        mpfr_sub(r52906, r52901, r52905, MPFR_RNDN);
        return mpfr_get_d(r52906, MPFR_RNDN);
}

static mpfr_t r52907, r52908, r52909, r52910, r52911, r52912, r52913, r52914, r52915, r52916, r52917, r52918, r52919;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52907, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52908);
        mpfr_init(r52909);
        mpfr_init(r52910);
        mpfr_init(r52911);
        mpfr_init(r52912);
        mpfr_init(r52913);
        mpfr_init(r52914);
        mpfr_init(r52915);
        mpfr_init(r52916);
        mpfr_init(r52917);
        mpfr_init(r52918);
        mpfr_init(r52919);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r52908, x, MPFR_RNDN);
        mpfr_set_d(r52909, y, MPFR_RNDN);
        mpfr_div(r52910, r52909, r52908, MPFR_RNDN);
        mpfr_div(r52911, r52908, r52910, MPFR_RNDN);
        mpfr_mul(r52912, r52907, r52911, MPFR_RNDN);
        mpfr_mul(r52913, r52907, r52909, MPFR_RNDN);
        mpfr_add(r52914, r52912, r52913, MPFR_RNDN);
        mpfr_set_d(r52915, z, MPFR_RNDN);
        mpfr_div(r52916, r52909, r52915, MPFR_RNDN);
        mpfr_div(r52917, r52915, r52916, MPFR_RNDN);
        mpfr_mul(r52918, r52907, r52917, MPFR_RNDN);
        mpfr_sub(r52919, r52914, r52918, MPFR_RNDN);
        return mpfr_get_d(r52919, MPFR_RNDN);
}

