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

char *name = "triangle8";

double f_if(float a, float b, float c) {
        float r21263 = a;
        float r21264 = b;
        float r21265 = r21263 + r21264;
        float r21266 = c;
        float r21267 = r21265 + r21266;
        float r21268 = 2;
        float r21269 = r21267 / r21268;
        float r21270 = r21269 - r21263;
        float r21271 = r21269 * r21270;
        float r21272 = r21269 - r21264;
        float r21273 = r21271 * r21272;
        float r21274 = r21269 - r21266;
        float r21275 = r21273 * r21274;
        float r21276 = sqrt(r21275);
        return r21276;
}

double f_id(double a, double b, double c) {
        double r21277 = a;
        double r21278 = b;
        double r21279 = r21277 + r21278;
        double r21280 = c;
        double r21281 = r21279 + r21280;
        double r21282 = 2;
        double r21283 = r21281 / r21282;
        double r21284 = r21283 - r21277;
        double r21285 = r21283 * r21284;
        double r21286 = r21283 - r21278;
        double r21287 = r21285 * r21286;
        double r21288 = r21283 - r21280;
        double r21289 = r21287 * r21288;
        double r21290 = sqrt(r21289);
        return r21290;
}


double f_of(float a, float b, float c) {
        float r21291 = b;
        float r21292 = a;
        float r21293 = r21291 + r21292;
        float r21294 = c;
        float r21295 = r21293 + r21294;
        float r21296 = 2;
        float r21297 = 1/2;
        float r21298 = r21296 / r21297;
        float r21299 = r21295 / r21298;
        float r21300 = 3;
        float r21301 = pow(r21299, r21300);
        float r21302 = r21292 - r21291;
        float r21303 = r21302 + r21294;
        float r21304 = pow(r21303, r21300);
        float r21305 = r21292 - r21294;
        float r21306 = r21305 + r21291;
        float r21307 = pow(r21306, r21300);
        float r21308 = r21304 * r21307;
        float r21309 = r21291 - r21305;
        float r21310 = r21297 * r21297;
        float r21311 = r21309 * r21310;
        float r21312 = pow(r21311, r21300);
        float r21313 = r21308 * r21312;
        float r21314 = r21301 * r21313;
        float r21315 = cbrt(r21314);
        float r21316 = sqrt(r21315);
        return r21316;
}

double f_od(double a, double b, double c) {
        double r21317 = b;
        double r21318 = a;
        double r21319 = r21317 + r21318;
        double r21320 = c;
        double r21321 = r21319 + r21320;
        double r21322 = 2;
        double r21323 = 1/2;
        double r21324 = r21322 / r21323;
        double r21325 = r21321 / r21324;
        double r21326 = 3;
        double r21327 = pow(r21325, r21326);
        double r21328 = r21318 - r21317;
        double r21329 = r21328 + r21320;
        double r21330 = pow(r21329, r21326);
        double r21331 = r21318 - r21320;
        double r21332 = r21331 + r21317;
        double r21333 = pow(r21332, r21326);
        double r21334 = r21330 * r21333;
        double r21335 = r21317 - r21331;
        double r21336 = r21323 * r21323;
        double r21337 = r21335 * r21336;
        double r21338 = pow(r21337, r21326);
        double r21339 = r21334 * r21338;
        double r21340 = r21327 * r21339;
        double r21341 = cbrt(r21340);
        double r21342 = sqrt(r21341);
        return r21342;
}

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 r21343, r21344, r21345, r21346, r21347, r21348, r21349, r21350, r21351, r21352, r21353, r21354, r21355, r21356;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21343);
        mpfr_init(r21344);
        mpfr_init(r21345);
        mpfr_init(r21346);
        mpfr_init(r21347);
        mpfr_init_set_str(r21348, "2", 10, MPFR_RNDN);
        mpfr_init(r21349);
        mpfr_init(r21350);
        mpfr_init(r21351);
        mpfr_init(r21352);
        mpfr_init(r21353);
        mpfr_init(r21354);
        mpfr_init(r21355);
        mpfr_init(r21356);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21343, a, MPFR_RNDN);
        mpfr_set_d(r21344, b, MPFR_RNDN);
        mpfr_add(r21345, r21343, r21344, MPFR_RNDN);
        mpfr_set_d(r21346, c, MPFR_RNDN);
        mpfr_add(r21347, r21345, r21346, MPFR_RNDN);
        ;
        mpfr_div(r21349, r21347, r21348, MPFR_RNDN);
        mpfr_sub(r21350, r21349, r21343, MPFR_RNDN);
        mpfr_mul(r21351, r21349, r21350, MPFR_RNDN);
        mpfr_sub(r21352, r21349, r21344, MPFR_RNDN);
        mpfr_mul(r21353, r21351, r21352, MPFR_RNDN);
        mpfr_sub(r21354, r21349, r21346, MPFR_RNDN);
        mpfr_mul(r21355, r21353, r21354, MPFR_RNDN);
        mpfr_sqrt(r21356, r21355, MPFR_RNDN);
        return mpfr_get_d(r21356, MPFR_RNDN);
}

static mpfr_t r21357, r21358, r21359, r21360, r21361, r21362, r21363, r21364, r21365, r21366, r21367, r21368, r21369, r21370, r21371, r21372, r21373, r21374, r21375, r21376, r21377, r21378, r21379, r21380, r21381, r21382;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21357);
        mpfr_init(r21358);
        mpfr_init(r21359);
        mpfr_init(r21360);
        mpfr_init(r21361);
        mpfr_init_set_str(r21362, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21363, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21364);
        mpfr_init(r21365);
        mpfr_init_set_str(r21366, "3", 10, MPFR_RNDN);
        mpfr_init(r21367);
        mpfr_init(r21368);
        mpfr_init(r21369);
        mpfr_init(r21370);
        mpfr_init(r21371);
        mpfr_init(r21372);
        mpfr_init(r21373);
        mpfr_init(r21374);
        mpfr_init(r21375);
        mpfr_init(r21376);
        mpfr_init(r21377);
        mpfr_init(r21378);
        mpfr_init(r21379);
        mpfr_init(r21380);
        mpfr_init(r21381);
        mpfr_init(r21382);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r21357, b, MPFR_RNDN);
        mpfr_set_d(r21358, a, MPFR_RNDN);
        mpfr_add(r21359, r21357, r21358, MPFR_RNDN);
        mpfr_set_d(r21360, c, MPFR_RNDN);
        mpfr_add(r21361, r21359, r21360, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21364, r21362, r21363, MPFR_RNDN);
        mpfr_div(r21365, r21361, r21364, MPFR_RNDN);
        ;
        mpfr_pow(r21367, r21365, r21366, MPFR_RNDN);
        mpfr_sub(r21368, r21358, r21357, MPFR_RNDN);
        mpfr_add(r21369, r21368, r21360, MPFR_RNDN);
        mpfr_pow(r21370, r21369, r21366, MPFR_RNDN);
        mpfr_sub(r21371, r21358, r21360, MPFR_RNDN);
        mpfr_add(r21372, r21371, r21357, MPFR_RNDN);
        mpfr_pow(r21373, r21372, r21366, MPFR_RNDN);
        mpfr_mul(r21374, r21370, r21373, MPFR_RNDN);
        mpfr_sub(r21375, r21357, r21371, MPFR_RNDN);
        mpfr_mul(r21376, r21363, r21363, MPFR_RNDN);
        mpfr_mul(r21377, r21375, r21376, MPFR_RNDN);
        mpfr_pow(r21378, r21377, r21366, MPFR_RNDN);
        mpfr_mul(r21379, r21374, r21378, MPFR_RNDN);
        mpfr_mul(r21380, r21367, r21379, MPFR_RNDN);
        mpfr_cbrt(r21381, r21380, MPFR_RNDN);
        mpfr_sqrt(r21382, r21381, MPFR_RNDN);
        return mpfr_get_d(r21382, MPFR_RNDN);
}

static mpfr_t r21383, r21384, r21385, r21386, r21387, r21388, r21389, r21390, r21391, r21392, r21393, r21394, r21395, r21396, r21397, r21398, r21399, r21400, r21401, r21402, r21403, r21404, r21405, r21406, r21407, r21408;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21383);
        mpfr_init(r21384);
        mpfr_init(r21385);
        mpfr_init(r21386);
        mpfr_init(r21387);
        mpfr_init_set_str(r21388, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21389, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21390);
        mpfr_init(r21391);
        mpfr_init_set_str(r21392, "3", 10, MPFR_RNDN);
        mpfr_init(r21393);
        mpfr_init(r21394);
        mpfr_init(r21395);
        mpfr_init(r21396);
        mpfr_init(r21397);
        mpfr_init(r21398);
        mpfr_init(r21399);
        mpfr_init(r21400);
        mpfr_init(r21401);
        mpfr_init(r21402);
        mpfr_init(r21403);
        mpfr_init(r21404);
        mpfr_init(r21405);
        mpfr_init(r21406);
        mpfr_init(r21407);
        mpfr_init(r21408);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r21383, b, MPFR_RNDN);
        mpfr_set_d(r21384, a, MPFR_RNDN);
        mpfr_add(r21385, r21383, r21384, MPFR_RNDN);
        mpfr_set_d(r21386, c, MPFR_RNDN);
        mpfr_add(r21387, r21385, r21386, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21390, r21388, r21389, MPFR_RNDN);
        mpfr_div(r21391, r21387, r21390, MPFR_RNDN);
        ;
        mpfr_pow(r21393, r21391, r21392, MPFR_RNDN);
        mpfr_sub(r21394, r21384, r21383, MPFR_RNDN);
        mpfr_add(r21395, r21394, r21386, MPFR_RNDN);
        mpfr_pow(r21396, r21395, r21392, MPFR_RNDN);
        mpfr_sub(r21397, r21384, r21386, MPFR_RNDN);
        mpfr_add(r21398, r21397, r21383, MPFR_RNDN);
        mpfr_pow(r21399, r21398, r21392, MPFR_RNDN);
        mpfr_mul(r21400, r21396, r21399, MPFR_RNDN);
        mpfr_sub(r21401, r21383, r21397, MPFR_RNDN);
        mpfr_mul(r21402, r21389, r21389, MPFR_RNDN);
        mpfr_mul(r21403, r21401, r21402, MPFR_RNDN);
        mpfr_pow(r21404, r21403, r21392, MPFR_RNDN);
        mpfr_mul(r21405, r21400, r21404, MPFR_RNDN);
        mpfr_mul(r21406, r21393, r21405, MPFR_RNDN);
        mpfr_cbrt(r21407, r21406, MPFR_RNDN);
        mpfr_sqrt(r21408, r21407, MPFR_RNDN);
        return mpfr_get_d(r21408, MPFR_RNDN);
}

