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

char *name = "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, K";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r52351 = 2.0f;
        float r52352 = x;
        float r52353 = sqrt(r52352);
        float r52354 = r52351 * r52353;
        float r52355 = y;
        float r52356 = z;
        float r52357 = t;
        float r52358 = r52356 * r52357;
        float r52359 = 3.0f;
        float r52360 = r52358 / r52359;
        float r52361 = r52355 - r52360;
        float r52362 = cos(r52361);
        float r52363 = r52354 * r52362;
        float r52364 = a;
        float r52365 = b;
        float r52366 = r52365 * r52359;
        float r52367 = r52364 / r52366;
        float r52368 = r52363 - r52367;
        return r52368;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r52369 = 2.0;
        double r52370 = x;
        double r52371 = sqrt(r52370);
        double r52372 = r52369 * r52371;
        double r52373 = y;
        double r52374 = z;
        double r52375 = t;
        double r52376 = r52374 * r52375;
        double r52377 = 3.0;
        double r52378 = r52376 / r52377;
        double r52379 = r52373 - r52378;
        double r52380 = cos(r52379);
        double r52381 = r52372 * r52380;
        double r52382 = a;
        double r52383 = b;
        double r52384 = r52383 * r52377;
        double r52385 = r52382 / r52384;
        double r52386 = r52381 - r52385;
        return r52386;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r52387 = y;
        float r52388 = -97906.53507359796f;
        bool r52389 = r52387 <= r52388;
        float r52390 = 2.0f;
        float r52391 = x;
        float r52392 = sqrt(r52391);
        float r52393 = r52390 * r52392;
        float r52394 = cos(r52387);
        float r52395 = z;
        float r52396 = t;
        float r52397 = r52395 * r52396;
        float r52398 = 3.0f;
        float r52399 = r52397 / r52398;
        float r52400 = cos(r52399);
        float r52401 = cbrt(r52400);
        float r52402 = r52401 * (r52401 * r52401);
        float r52403 = r52394 * r52402;
        float r52404 = sin(r52387);
        float r52405 = cbrt(r52399);
        float r52406 = r52405 * (r52405 * r52405);
        float r52407 = sin(r52406);
        float r52408 = r52404 * r52407;
        float r52409 = r52403 + r52408;
        float r52410 = r52393 * r52409;
        float r52411 = a;
        float r52412 = b;
        float r52413 = r52412 * r52398;
        float r52414 = r52411 / r52413;
        float r52415 = r52410 - r52414;
        float r52416 = 361619410.9503674f;
        bool r52417 = r52387 <= r52416;
        float r52418 = 1.0f;
        float r52419 = 0.5f;
        float r52420 = r52387 * r52387;
        float r52421 = r52419 * r52420;
        float r52422 = r52418 - r52421;
        float r52423 = r52393 * r52422;
        float r52424 = r52423 - r52414;
        float r52425 = r52394 * r52400;
        float r52426 = cbrt(r52405);
        float r52427 = r52426 * (r52426 * r52426);
        float r52428 = r52427 * (r52427 * r52427);
        float r52429 = sin(r52428);
        float r52430 = r52404 * r52429;
        float r52431 = r52425 + r52430;
        float r52432 = r52393 * r52431;
        float r52433 = r52432 - r52414;
        float r52434 = r52417 ? r52424 : r52433;
        float r52435 = r52389 ? r52415 : r52434;
        return r52435;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r52436 = y;
        double r52437 = -97906.53507359796;
        bool r52438 = r52436 <= r52437;
        double r52439 = 2.0;
        double r52440 = x;
        double r52441 = sqrt(r52440);
        double r52442 = r52439 * r52441;
        double r52443 = cos(r52436);
        double r52444 = z;
        double r52445 = t;
        double r52446 = r52444 * r52445;
        double r52447 = 3.0;
        double r52448 = r52446 / r52447;
        double r52449 = cos(r52448);
        double r52450 = cbrt(r52449);
        double r52451 = r52450 * (r52450 * r52450);
        double r52452 = r52443 * r52451;
        double r52453 = sin(r52436);
        double r52454 = cbrt(r52448);
        double r52455 = r52454 * (r52454 * r52454);
        double r52456 = sin(r52455);
        double r52457 = r52453 * r52456;
        double r52458 = r52452 + r52457;
        double r52459 = r52442 * r52458;
        double r52460 = a;
        double r52461 = b;
        double r52462 = r52461 * r52447;
        double r52463 = r52460 / r52462;
        double r52464 = r52459 - r52463;
        double r52465 = 361619410.9503674;
        bool r52466 = r52436 <= r52465;
        double r52467 = 1.0;
        double r52468 = 0.5;
        double r52469 = r52436 * r52436;
        double r52470 = r52468 * r52469;
        double r52471 = r52467 - r52470;
        double r52472 = r52442 * r52471;
        double r52473 = r52472 - r52463;
        double r52474 = r52443 * r52449;
        double r52475 = cbrt(r52454);
        double r52476 = r52475 * (r52475 * r52475);
        double r52477 = r52476 * (r52476 * r52476);
        double r52478 = sin(r52477);
        double r52479 = r52453 * r52478;
        double r52480 = r52474 + r52479;
        double r52481 = r52442 * r52480;
        double r52482 = r52481 - r52463;
        double r52483 = r52466 ? r52473 : r52482;
        double r52484 = r52438 ? r52464 : r52483;
        return r52484;
}

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 r52485, r52486, r52487, r52488, r52489, r52490, r52491, r52492, r52493, r52494, r52495, r52496, r52497, r52498, r52499, r52500, r52501, r52502;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r52485, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52486);
        mpfr_init(r52487);
        mpfr_init(r52488);
        mpfr_init(r52489);
        mpfr_init(r52490);
        mpfr_init(r52491);
        mpfr_init(r52492);
        mpfr_init_set_str(r52493, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52494);
        mpfr_init(r52495);
        mpfr_init(r52496);
        mpfr_init(r52497);
        mpfr_init(r52498);
        mpfr_init(r52499);
        mpfr_init(r52500);
        mpfr_init(r52501);
        mpfr_init(r52502);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        ;
        mpfr_set_d(r52486, x, MPFR_RNDN);
        mpfr_sqrt(r52487, r52486, MPFR_RNDN);
        mpfr_mul(r52488, r52485, r52487, MPFR_RNDN);
        mpfr_set_d(r52489, y, MPFR_RNDN);
        mpfr_set_d(r52490, z, MPFR_RNDN);
        mpfr_set_d(r52491, t, MPFR_RNDN);
        mpfr_mul(r52492, r52490, r52491, MPFR_RNDN);
        ;
        mpfr_div(r52494, r52492, r52493, MPFR_RNDN);
        mpfr_sub(r52495, r52489, r52494, MPFR_RNDN);
        mpfr_cos(r52496, r52495, MPFR_RNDN);
        mpfr_mul(r52497, r52488, r52496, MPFR_RNDN);
        mpfr_set_d(r52498, a, MPFR_RNDN);
        mpfr_set_d(r52499, b, MPFR_RNDN);
        mpfr_mul(r52500, r52499, r52493, MPFR_RNDN);
        mpfr_div(r52501, r52498, r52500, MPFR_RNDN);
        mpfr_sub(r52502, r52497, r52501, MPFR_RNDN);
        return mpfr_get_d(r52502, MPFR_RNDN);
}

static mpfr_t r52503, r52504, r52505, r52506, r52507, r52508, r52509, r52510, r52511, r52512, r52513, r52514, r52515, r52516, r52517, r52518, r52519, r52520, r52521, r52522, r52523, r52524, r52525, r52526, r52527, r52528, r52529, r52530, r52531, r52532, r52533, r52534, r52535, r52536, r52537, r52538, r52539, r52540, r52541, r52542, r52543, r52544, r52545, r52546, r52547, r52548, r52549, r52550, r52551;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52503);
        mpfr_init_set_str(r52504, "-97906.53507359796", 10, MPFR_RNDN);
        mpfr_init(r52505);
        mpfr_init_set_str(r52506, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52507);
        mpfr_init(r52508);
        mpfr_init(r52509);
        mpfr_init(r52510);
        mpfr_init(r52511);
        mpfr_init(r52512);
        mpfr_init(r52513);
        mpfr_init_set_str(r52514, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52515);
        mpfr_init(r52516);
        mpfr_init(r52517);
        mpfr_init(r52518);
        mpfr_init(r52519);
        mpfr_init(r52520);
        mpfr_init(r52521);
        mpfr_init(r52522);
        mpfr_init(r52523);
        mpfr_init(r52524);
        mpfr_init(r52525);
        mpfr_init(r52526);
        mpfr_init(r52527);
        mpfr_init(r52528);
        mpfr_init(r52529);
        mpfr_init(r52530);
        mpfr_init(r52531);
        mpfr_init_set_str(r52532, "361619410.9503674", 10, MPFR_RNDN);
        mpfr_init(r52533);
        mpfr_init_set_str(r52534, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52535, "1/2", 10, MPFR_RNDN);
        mpfr_init(r52536);
        mpfr_init(r52537);
        mpfr_init(r52538);
        mpfr_init(r52539);
        mpfr_init(r52540);
        mpfr_init(r52541);
        mpfr_init(r52542);
        mpfr_init(r52543);
        mpfr_init(r52544);
        mpfr_init(r52545);
        mpfr_init(r52546);
        mpfr_init(r52547);
        mpfr_init(r52548);
        mpfr_init(r52549);
        mpfr_init(r52550);
        mpfr_init(r52551);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r52503, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52505, mpfr_cmp(r52503, r52504) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r52507, x, MPFR_RNDN);
        mpfr_sqrt(r52508, r52507, MPFR_RNDN);
        mpfr_mul(r52509, r52506, r52508, MPFR_RNDN);
        mpfr_cos(r52510, r52503, MPFR_RNDN);
        mpfr_set_d(r52511, z, MPFR_RNDN);
        mpfr_set_d(r52512, t, MPFR_RNDN);
        mpfr_mul(r52513, r52511, r52512, MPFR_RNDN);
        ;
        mpfr_div(r52515, r52513, r52514, MPFR_RNDN);
        mpfr_cos(r52516, r52515, MPFR_RNDN);
        mpfr_cbrt(r52517, r52516, MPFR_RNDN);
        mpfr_mul(r52518, r52517, r52517, MPFR_RNDN); mpfr_mul(r52518, r52518, r52517, MPFR_RNDN);
        mpfr_mul(r52519, r52510, r52518, MPFR_RNDN);
        mpfr_sin(r52520, r52503, MPFR_RNDN);
        mpfr_cbrt(r52521, r52515, MPFR_RNDN);
        mpfr_mul(r52522, r52521, r52521, MPFR_RNDN); mpfr_mul(r52522, r52522, r52521, MPFR_RNDN);
        mpfr_sin(r52523, r52522, MPFR_RNDN);
        mpfr_mul(r52524, r52520, r52523, MPFR_RNDN);
        mpfr_add(r52525, r52519, r52524, MPFR_RNDN);
        mpfr_mul(r52526, r52509, r52525, MPFR_RNDN);
        mpfr_set_d(r52527, a, MPFR_RNDN);
        mpfr_set_d(r52528, b, MPFR_RNDN);
        mpfr_mul(r52529, r52528, r52514, MPFR_RNDN);
        mpfr_div(r52530, r52527, r52529, MPFR_RNDN);
        mpfr_sub(r52531, r52526, r52530, MPFR_RNDN);
        ;
        mpfr_set_si(r52533, mpfr_cmp(r52503, r52532) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_sqr(r52536, r52503, MPFR_RNDN);
        mpfr_mul(r52537, r52535, r52536, MPFR_RNDN);
        mpfr_sub(r52538, r52534, r52537, MPFR_RNDN);
        mpfr_mul(r52539, r52509, r52538, MPFR_RNDN);
        mpfr_sub(r52540, r52539, r52530, MPFR_RNDN);
        mpfr_mul(r52541, r52510, r52516, MPFR_RNDN);
        mpfr_cbrt(r52542, r52521, MPFR_RNDN);
        mpfr_mul(r52543, r52542, r52542, MPFR_RNDN); mpfr_mul(r52543, r52543, r52542, MPFR_RNDN);
        mpfr_mul(r52544, r52543, r52543, MPFR_RNDN); mpfr_mul(r52544, r52544, r52543, MPFR_RNDN);
        mpfr_sin(r52545, r52544, MPFR_RNDN);
        mpfr_mul(r52546, r52520, r52545, MPFR_RNDN);
        mpfr_add(r52547, r52541, r52546, MPFR_RNDN);
        mpfr_mul(r52548, r52509, r52547, MPFR_RNDN);
        mpfr_sub(r52549, r52548, r52530, MPFR_RNDN);
        if (mpfr_get_si(r52533, MPFR_RNDN)) { mpfr_set(r52550, r52540, MPFR_RNDN); } else { mpfr_set(r52550, r52549, MPFR_RNDN); };
        if (mpfr_get_si(r52505, MPFR_RNDN)) { mpfr_set(r52551, r52531, MPFR_RNDN); } else { mpfr_set(r52551, r52550, MPFR_RNDN); };
        return mpfr_get_d(r52551, MPFR_RNDN);
}

static mpfr_t r52552, r52553, r52554, r52555, r52556, r52557, r52558, r52559, r52560, r52561, r52562, r52563, r52564, r52565, r52566, r52567, r52568, r52569, r52570, r52571, r52572, r52573, r52574, r52575, r52576, r52577, r52578, r52579, r52580, r52581, r52582, r52583, r52584, r52585, r52586, r52587, r52588, r52589, r52590, r52591, r52592, r52593, r52594, r52595, r52596, r52597, r52598, r52599, r52600;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52552);
        mpfr_init_set_str(r52553, "-97906.53507359796", 10, MPFR_RNDN);
        mpfr_init(r52554);
        mpfr_init_set_str(r52555, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52556);
        mpfr_init(r52557);
        mpfr_init(r52558);
        mpfr_init(r52559);
        mpfr_init(r52560);
        mpfr_init(r52561);
        mpfr_init(r52562);
        mpfr_init_set_str(r52563, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52564);
        mpfr_init(r52565);
        mpfr_init(r52566);
        mpfr_init(r52567);
        mpfr_init(r52568);
        mpfr_init(r52569);
        mpfr_init(r52570);
        mpfr_init(r52571);
        mpfr_init(r52572);
        mpfr_init(r52573);
        mpfr_init(r52574);
        mpfr_init(r52575);
        mpfr_init(r52576);
        mpfr_init(r52577);
        mpfr_init(r52578);
        mpfr_init(r52579);
        mpfr_init(r52580);
        mpfr_init_set_str(r52581, "361619410.9503674", 10, MPFR_RNDN);
        mpfr_init(r52582);
        mpfr_init_set_str(r52583, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52584, "1/2", 10, MPFR_RNDN);
        mpfr_init(r52585);
        mpfr_init(r52586);
        mpfr_init(r52587);
        mpfr_init(r52588);
        mpfr_init(r52589);
        mpfr_init(r52590);
        mpfr_init(r52591);
        mpfr_init(r52592);
        mpfr_init(r52593);
        mpfr_init(r52594);
        mpfr_init(r52595);
        mpfr_init(r52596);
        mpfr_init(r52597);
        mpfr_init(r52598);
        mpfr_init(r52599);
        mpfr_init(r52600);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r52552, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52554, mpfr_cmp(r52552, r52553) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r52556, x, MPFR_RNDN);
        mpfr_sqrt(r52557, r52556, MPFR_RNDN);
        mpfr_mul(r52558, r52555, r52557, MPFR_RNDN);
        mpfr_cos(r52559, r52552, MPFR_RNDN);
        mpfr_set_d(r52560, z, MPFR_RNDN);
        mpfr_set_d(r52561, t, MPFR_RNDN);
        mpfr_mul(r52562, r52560, r52561, MPFR_RNDN);
        ;
        mpfr_div(r52564, r52562, r52563, MPFR_RNDN);
        mpfr_cos(r52565, r52564, MPFR_RNDN);
        mpfr_cbrt(r52566, r52565, MPFR_RNDN);
        mpfr_mul(r52567, r52566, r52566, MPFR_RNDN); mpfr_mul(r52567, r52567, r52566, MPFR_RNDN);
        mpfr_mul(r52568, r52559, r52567, MPFR_RNDN);
        mpfr_sin(r52569, r52552, MPFR_RNDN);
        mpfr_cbrt(r52570, r52564, MPFR_RNDN);
        mpfr_mul(r52571, r52570, r52570, MPFR_RNDN); mpfr_mul(r52571, r52571, r52570, MPFR_RNDN);
        mpfr_sin(r52572, r52571, MPFR_RNDN);
        mpfr_mul(r52573, r52569, r52572, MPFR_RNDN);
        mpfr_add(r52574, r52568, r52573, MPFR_RNDN);
        mpfr_mul(r52575, r52558, r52574, MPFR_RNDN);
        mpfr_set_d(r52576, a, MPFR_RNDN);
        mpfr_set_d(r52577, b, MPFR_RNDN);
        mpfr_mul(r52578, r52577, r52563, MPFR_RNDN);
        mpfr_div(r52579, r52576, r52578, MPFR_RNDN);
        mpfr_sub(r52580, r52575, r52579, MPFR_RNDN);
        ;
        mpfr_set_si(r52582, mpfr_cmp(r52552, r52581) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_sqr(r52585, r52552, MPFR_RNDN);
        mpfr_mul(r52586, r52584, r52585, MPFR_RNDN);
        mpfr_sub(r52587, r52583, r52586, MPFR_RNDN);
        mpfr_mul(r52588, r52558, r52587, MPFR_RNDN);
        mpfr_sub(r52589, r52588, r52579, MPFR_RNDN);
        mpfr_mul(r52590, r52559, r52565, MPFR_RNDN);
        mpfr_cbrt(r52591, r52570, MPFR_RNDN);
        mpfr_mul(r52592, r52591, r52591, MPFR_RNDN); mpfr_mul(r52592, r52592, r52591, MPFR_RNDN);
        mpfr_mul(r52593, r52592, r52592, MPFR_RNDN); mpfr_mul(r52593, r52593, r52592, MPFR_RNDN);
        mpfr_sin(r52594, r52593, MPFR_RNDN);
        mpfr_mul(r52595, r52569, r52594, MPFR_RNDN);
        mpfr_add(r52596, r52590, r52595, MPFR_RNDN);
        mpfr_mul(r52597, r52558, r52596, MPFR_RNDN);
        mpfr_sub(r52598, r52597, r52579, MPFR_RNDN);
        if (mpfr_get_si(r52582, MPFR_RNDN)) { mpfr_set(r52599, r52589, MPFR_RNDN); } else { mpfr_set(r52599, r52598, MPFR_RNDN); };
        if (mpfr_get_si(r52554, MPFR_RNDN)) { mpfr_set(r52600, r52580, MPFR_RNDN); } else { mpfr_set(r52600, r52599, MPFR_RNDN); };
        return mpfr_get_d(r52600, MPFR_RNDN);
}

