#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 r50375 = 2.0f;
        float r50376 = x;
        float r50377 = y;
        float r50378 = r50376 * r50377;
        float r50379 = z;
        float r50380 = r50376 * r50379;
        float r50381 = r50378 + r50380;
        float r50382 = r50377 * r50379;
        float r50383 = r50381 + r50382;
        float r50384 = sqrt(r50383);
        float r50385 = r50375 * r50384;
        return r50385;
}

double f_id(double x, double y, double z) {
        double r50386 = 2.0;
        double r50387 = x;
        double r50388 = y;
        double r50389 = r50387 * r50388;
        double r50390 = z;
        double r50391 = r50387 * r50390;
        double r50392 = r50389 + r50391;
        double r50393 = r50388 * r50390;
        double r50394 = r50392 + r50393;
        double r50395 = sqrt(r50394);
        double r50396 = r50386 * r50395;
        return r50396;
}


double f_of(float x, float y, float z) {
        float r50397 = x;
        float r50398 = 2.1372757541004473e+172f;
        bool r50399 = r50397 <= r50398;
        float r50400 = 2.0f;
        float r50401 = z;
        float r50402 = r50401 + r50397;
        float r50403 = y;
        float r50404 = r50402 * r50403;
        float r50405 = r50397 * r50401;
        float r50406 = r50404 + r50405;
        float r50407 = sqrt(r50406);
        float r50408 = r50400 * r50407;
        float r50409 = 0.25f;
        float r50410 = -0.25f;
        float r50411 = 3.0f;
        float r50412 = log(r50401);
        float r50413 = r50411 * r50412;
        float r50414 = log(r50397);
        float r50415 = r50411 * r50414;
        float r50416 = r50413 + r50415;
        float r50417 = r50410 * r50416;
        float r50418 = exp(r50417);
        float r50419 = r50418 * r50403;
        float r50420 = r50401 * r50419;
        float r50421 = r50409 * r50420;
        float r50422 = r50412 + r50414;
        float r50423 = r50409 * r50422;
        float r50424 = exp(r50423);
        float r50425 = r50403 * r50397;
        float r50426 = r50418 * r50425;
        float r50427 = r50409 * r50426;
        float r50428 = r50424 + r50427;
        float r50429 = r50421 + r50428;
        float r50430 = r50429 * r50429;
        float r50431 = r50400 * r50430;
        float r50432 = r50399 ? r50408 : r50431;
        return r50432;
}

double f_od(double x, double y, double z) {
        double r50433 = x;
        double r50434 = 2.1372757541004473e+172;
        bool r50435 = r50433 <= r50434;
        double r50436 = 2.0;
        double r50437 = z;
        double r50438 = r50437 + r50433;
        double r50439 = y;
        double r50440 = r50438 * r50439;
        double r50441 = r50433 * r50437;
        double r50442 = r50440 + r50441;
        double r50443 = sqrt(r50442);
        double r50444 = r50436 * r50443;
        double r50445 = 0.25;
        double r50446 = -0.25;
        double r50447 = 3.0;
        double r50448 = log(r50437);
        double r50449 = r50447 * r50448;
        double r50450 = log(r50433);
        double r50451 = r50447 * r50450;
        double r50452 = r50449 + r50451;
        double r50453 = r50446 * r50452;
        double r50454 = exp(r50453);
        double r50455 = r50454 * r50439;
        double r50456 = r50437 * r50455;
        double r50457 = r50445 * r50456;
        double r50458 = r50448 + r50450;
        double r50459 = r50445 * r50458;
        double r50460 = exp(r50459);
        double r50461 = r50439 * r50433;
        double r50462 = r50454 * r50461;
        double r50463 = r50445 * r50462;
        double r50464 = r50460 + r50463;
        double r50465 = r50457 + r50464;
        double r50466 = r50465 * r50465;
        double r50467 = r50436 * r50466;
        double r50468 = r50435 ? r50444 : r50467;
        return r50468;
}

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 r50469, r50470, r50471, r50472, r50473, r50474, r50475, r50476, r50477, r50478, r50479;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50469, "2.0", 10, MPFR_RNDN);
        mpfr_init(r50470);
        mpfr_init(r50471);
        mpfr_init(r50472);
        mpfr_init(r50473);
        mpfr_init(r50474);
        mpfr_init(r50475);
        mpfr_init(r50476);
        mpfr_init(r50477);
        mpfr_init(r50478);
        mpfr_init(r50479);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r50470, x, MPFR_RNDN);
        mpfr_set_d(r50471, y, MPFR_RNDN);
        mpfr_mul(r50472, r50470, r50471, MPFR_RNDN);
        mpfr_set_d(r50473, z, MPFR_RNDN);
        mpfr_mul(r50474, r50470, r50473, MPFR_RNDN);
        mpfr_add(r50475, r50472, r50474, MPFR_RNDN);
        mpfr_mul(r50476, r50471, r50473, MPFR_RNDN);
        mpfr_add(r50477, r50475, r50476, MPFR_RNDN);
        mpfr_sqrt(r50478, r50477, MPFR_RNDN);
        mpfr_mul(r50479, r50469, r50478, MPFR_RNDN);
        return mpfr_get_d(r50479, MPFR_RNDN);
}

static mpfr_t r50480, r50481, r50482, r50483, r50484, r50485, r50486, r50487, r50488, r50489, r50490, r50491, r50492, r50493, r50494, r50495, r50496, r50497, r50498, r50499, r50500, r50501, r50502, r50503, r50504, r50505, r50506, r50507, r50508, r50509, r50510, r50511, r50512, r50513, r50514, r50515;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50480);
        mpfr_init_set_str(r50481, "2.1372757541004473e+172", 10, MPFR_RNDN);
        mpfr_init(r50482);
        mpfr_init_set_str(r50483, "2.0", 10, MPFR_RNDN);
        mpfr_init(r50484);
        mpfr_init(r50485);
        mpfr_init(r50486);
        mpfr_init(r50487);
        mpfr_init(r50488);
        mpfr_init(r50489);
        mpfr_init(r50490);
        mpfr_init(r50491);
        mpfr_init_set_str(r50492, "1/4", 10, MPFR_RNDN);
        mpfr_init_set_str(r50493, "-1/4", 10, MPFR_RNDN);
        mpfr_init_set_str(r50494, "3", 10, MPFR_RNDN);
        mpfr_init(r50495);
        mpfr_init(r50496);
        mpfr_init(r50497);
        mpfr_init(r50498);
        mpfr_init(r50499);
        mpfr_init(r50500);
        mpfr_init(r50501);
        mpfr_init(r50502);
        mpfr_init(r50503);
        mpfr_init(r50504);
        mpfr_init(r50505);
        mpfr_init(r50506);
        mpfr_init(r50507);
        mpfr_init(r50508);
        mpfr_init(r50509);
        mpfr_init(r50510);
        mpfr_init(r50511);
        mpfr_init(r50512);
        mpfr_init(r50513);
        mpfr_init(r50514);
        mpfr_init(r50515);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50480, x, MPFR_RNDN);
        ;
        mpfr_set_si(r50482, mpfr_cmp(r50480, r50481) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r50484, z, MPFR_RNDN);
        mpfr_add(r50485, r50484, r50480, MPFR_RNDN);
        mpfr_set_d(r50486, y, MPFR_RNDN);
        mpfr_mul(r50487, r50485, r50486, MPFR_RNDN);
        mpfr_mul(r50488, r50480, r50484, MPFR_RNDN);
        mpfr_add(r50489, r50487, r50488, MPFR_RNDN);
        mpfr_sqrt(r50490, r50489, MPFR_RNDN);
        mpfr_mul(r50491, r50483, r50490, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_log(r50495, r50484, MPFR_RNDN);
        mpfr_mul(r50496, r50494, r50495, MPFR_RNDN);
        mpfr_log(r50497, r50480, MPFR_RNDN);
        mpfr_mul(r50498, r50494, r50497, MPFR_RNDN);
        mpfr_add(r50499, r50496, r50498, MPFR_RNDN);
        mpfr_mul(r50500, r50493, r50499, MPFR_RNDN);
        mpfr_exp(r50501, r50500, MPFR_RNDN);
        mpfr_mul(r50502, r50501, r50486, MPFR_RNDN);
        mpfr_mul(r50503, r50484, r50502, MPFR_RNDN);
        mpfr_mul(r50504, r50492, r50503, MPFR_RNDN);
        mpfr_add(r50505, r50495, r50497, MPFR_RNDN);
        mpfr_mul(r50506, r50492, r50505, MPFR_RNDN);
        mpfr_exp(r50507, r50506, MPFR_RNDN);
        mpfr_mul(r50508, r50486, r50480, MPFR_RNDN);
        mpfr_mul(r50509, r50501, r50508, MPFR_RNDN);
        mpfr_mul(r50510, r50492, r50509, MPFR_RNDN);
        mpfr_add(r50511, r50507, r50510, MPFR_RNDN);
        mpfr_add(r50512, r50504, r50511, MPFR_RNDN);
        mpfr_sqr(r50513, r50512, MPFR_RNDN);
        mpfr_mul(r50514, r50483, r50513, MPFR_RNDN);
        if (mpfr_get_si(r50482, MPFR_RNDN)) { mpfr_set(r50515, r50491, MPFR_RNDN); } else { mpfr_set(r50515, r50514, MPFR_RNDN); };
        return mpfr_get_d(r50515, MPFR_RNDN);
}

static mpfr_t r50516, r50517, r50518, r50519, r50520, r50521, r50522, r50523, r50524, r50525, r50526, r50527, r50528, r50529, r50530, r50531, r50532, r50533, r50534, r50535, r50536, r50537, r50538, r50539, r50540, r50541, r50542, r50543, r50544, r50545, r50546, r50547, r50548, r50549, r50550, r50551;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50516);
        mpfr_init_set_str(r50517, "2.1372757541004473e+172", 10, MPFR_RNDN);
        mpfr_init(r50518);
        mpfr_init_set_str(r50519, "2.0", 10, MPFR_RNDN);
        mpfr_init(r50520);
        mpfr_init(r50521);
        mpfr_init(r50522);
        mpfr_init(r50523);
        mpfr_init(r50524);
        mpfr_init(r50525);
        mpfr_init(r50526);
        mpfr_init(r50527);
        mpfr_init_set_str(r50528, "1/4", 10, MPFR_RNDN);
        mpfr_init_set_str(r50529, "-1/4", 10, MPFR_RNDN);
        mpfr_init_set_str(r50530, "3", 10, MPFR_RNDN);
        mpfr_init(r50531);
        mpfr_init(r50532);
        mpfr_init(r50533);
        mpfr_init(r50534);
        mpfr_init(r50535);
        mpfr_init(r50536);
        mpfr_init(r50537);
        mpfr_init(r50538);
        mpfr_init(r50539);
        mpfr_init(r50540);
        mpfr_init(r50541);
        mpfr_init(r50542);
        mpfr_init(r50543);
        mpfr_init(r50544);
        mpfr_init(r50545);
        mpfr_init(r50546);
        mpfr_init(r50547);
        mpfr_init(r50548);
        mpfr_init(r50549);
        mpfr_init(r50550);
        mpfr_init(r50551);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50516, x, MPFR_RNDN);
        ;
        mpfr_set_si(r50518, mpfr_cmp(r50516, r50517) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r50520, z, MPFR_RNDN);
        mpfr_add(r50521, r50520, r50516, MPFR_RNDN);
        mpfr_set_d(r50522, y, MPFR_RNDN);
        mpfr_mul(r50523, r50521, r50522, MPFR_RNDN);
        mpfr_mul(r50524, r50516, r50520, MPFR_RNDN);
        mpfr_add(r50525, r50523, r50524, MPFR_RNDN);
        mpfr_sqrt(r50526, r50525, MPFR_RNDN);
        mpfr_mul(r50527, r50519, r50526, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_log(r50531, r50520, MPFR_RNDN);
        mpfr_mul(r50532, r50530, r50531, MPFR_RNDN);
        mpfr_log(r50533, r50516, MPFR_RNDN);
        mpfr_mul(r50534, r50530, r50533, MPFR_RNDN);
        mpfr_add(r50535, r50532, r50534, MPFR_RNDN);
        mpfr_mul(r50536, r50529, r50535, MPFR_RNDN);
        mpfr_exp(r50537, r50536, MPFR_RNDN);
        mpfr_mul(r50538, r50537, r50522, MPFR_RNDN);
        mpfr_mul(r50539, r50520, r50538, MPFR_RNDN);
        mpfr_mul(r50540, r50528, r50539, MPFR_RNDN);
        mpfr_add(r50541, r50531, r50533, MPFR_RNDN);
        mpfr_mul(r50542, r50528, r50541, MPFR_RNDN);
        mpfr_exp(r50543, r50542, MPFR_RNDN);
        mpfr_mul(r50544, r50522, r50516, MPFR_RNDN);
        mpfr_mul(r50545, r50537, r50544, MPFR_RNDN);
        mpfr_mul(r50546, r50528, r50545, MPFR_RNDN);
        mpfr_add(r50547, r50543, r50546, MPFR_RNDN);
        mpfr_add(r50548, r50540, r50547, MPFR_RNDN);
        mpfr_sqr(r50549, r50548, MPFR_RNDN);
        mpfr_mul(r50550, r50519, r50549, MPFR_RNDN);
        if (mpfr_get_si(r50518, MPFR_RNDN)) { mpfr_set(r50551, r50527, MPFR_RNDN); } else { mpfr_set(r50551, r50550, MPFR_RNDN); };
        return mpfr_get_d(r50551, MPFR_RNDN);
}

