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

double f_if(float x, float y, float z, float t) {
        float r53427 = 1.0f;
        float r53428 = 3.0f;
        float r53429 = r53427 / r53428;
        float r53430 = x;
        float r53431 = y;
        float r53432 = 27.0f;
        float r53433 = r53431 * r53432;
        float r53434 = r53430 / r53433;
        float r53435 = r53428 * r53434;
        float r53436 = z;
        float r53437 = 2.0f;
        float r53438 = r53436 * r53437;
        float r53439 = r53435 / r53438;
        float r53440 = t;
        float r53441 = sqrt(r53440);
        float r53442 = r53439 * r53441;
        float r53443 = acos(r53442);
        float r53444 = r53429 * r53443;
        return r53444;
}

double f_id(double x, double y, double z, double t) {
        double r53445 = 1.0;
        double r53446 = 3.0;
        double r53447 = r53445 / r53446;
        double r53448 = x;
        double r53449 = y;
        double r53450 = 27.0;
        double r53451 = r53449 * r53450;
        double r53452 = r53448 / r53451;
        double r53453 = r53446 * r53452;
        double r53454 = z;
        double r53455 = 2.0;
        double r53456 = r53454 * r53455;
        double r53457 = r53453 / r53456;
        double r53458 = t;
        double r53459 = sqrt(r53458);
        double r53460 = r53457 * r53459;
        double r53461 = acos(r53460);
        double r53462 = r53447 * r53461;
        return r53462;
}


double f_of(float x, float y, float z, float t) {
        float r53463 = 1.0f;
        float r53464 = 3.0f;
        float r53465 = r53463 / r53464;
        float r53466 = log(r53465);
        float r53467 = r53466 * r53466;
        float r53468 = x;
        float r53469 = y;
        float r53470 = 27.0f;
        float r53471 = r53469 * r53470;
        float r53472 = r53468 / r53471;
        float r53473 = r53464 * r53472;
        float r53474 = z;
        float r53475 = 2.0f;
        float r53476 = r53474 * r53475;
        float r53477 = r53473 / r53476;
        float r53478 = t;
        float r53479 = sqrt(r53478);
        float r53480 = r53477 * r53479;
        float r53481 = acos(r53480);
        float r53482 = log(r53481);
        float r53483 = r53482 * r53482;
        float r53484 = r53467 - r53483;
        float r53485 = r53466 - r53482;
        float r53486 = r53484 / r53485;
        float r53487 = exp(r53486);
        return r53487;
}

double f_od(double x, double y, double z, double t) {
        double r53488 = 1.0;
        double r53489 = 3.0;
        double r53490 = r53488 / r53489;
        double r53491 = log(r53490);
        double r53492 = r53491 * r53491;
        double r53493 = x;
        double r53494 = y;
        double r53495 = 27.0;
        double r53496 = r53494 * r53495;
        double r53497 = r53493 / r53496;
        double r53498 = r53489 * r53497;
        double r53499 = z;
        double r53500 = 2.0;
        double r53501 = r53499 * r53500;
        double r53502 = r53498 / r53501;
        double r53503 = t;
        double r53504 = sqrt(r53503);
        double r53505 = r53502 * r53504;
        double r53506 = acos(r53505);
        double r53507 = log(r53506);
        double r53508 = r53507 * r53507;
        double r53509 = r53492 - r53508;
        double r53510 = r53491 - r53507;
        double r53511 = r53509 / r53510;
        double r53512 = exp(r53511);
        return r53512;
}

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 r53513, r53514, r53515, r53516, r53517, r53518, r53519, r53520, r53521, r53522, r53523, r53524, r53525, r53526, r53527, r53528, r53529, r53530;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53513, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53514, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53515);
        mpfr_init(r53516);
        mpfr_init(r53517);
        mpfr_init_set_str(r53518, "27.0", 10, MPFR_RNDN);
        mpfr_init(r53519);
        mpfr_init(r53520);
        mpfr_init(r53521);
        mpfr_init(r53522);
        mpfr_init_set_str(r53523, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53524);
        mpfr_init(r53525);
        mpfr_init(r53526);
        mpfr_init(r53527);
        mpfr_init(r53528);
        mpfr_init(r53529);
        mpfr_init(r53530);
}

double f_im(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r53515, r53513, r53514, MPFR_RNDN);
        mpfr_set_d(r53516, x, MPFR_RNDN);
        mpfr_set_d(r53517, y, MPFR_RNDN);
        ;
        mpfr_mul(r53519, r53517, r53518, MPFR_RNDN);
        mpfr_div(r53520, r53516, r53519, MPFR_RNDN);
        mpfr_mul(r53521, r53514, r53520, MPFR_RNDN);
        mpfr_set_d(r53522, z, MPFR_RNDN);
        ;
        mpfr_mul(r53524, r53522, r53523, MPFR_RNDN);
        mpfr_div(r53525, r53521, r53524, MPFR_RNDN);
        mpfr_set_d(r53526, t, MPFR_RNDN);
        mpfr_sqrt(r53527, r53526, MPFR_RNDN);
        mpfr_mul(r53528, r53525, r53527, MPFR_RNDN);
        mpfr_acos(r53529, r53528, MPFR_RNDN);
        mpfr_mul(r53530, r53515, r53529, MPFR_RNDN);
        return mpfr_get_d(r53530, MPFR_RNDN);
}

static mpfr_t r53531, r53532, r53533, r53534, r53535, r53536, r53537, r53538, r53539, r53540, r53541, r53542, r53543, r53544, r53545, r53546, r53547, r53548, r53549, r53550, r53551, r53552, r53553, r53554, r53555;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53531, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53532, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53533);
        mpfr_init(r53534);
        mpfr_init(r53535);
        mpfr_init(r53536);
        mpfr_init(r53537);
        mpfr_init_set_str(r53538, "27.0", 10, MPFR_RNDN);
        mpfr_init(r53539);
        mpfr_init(r53540);
        mpfr_init(r53541);
        mpfr_init(r53542);
        mpfr_init_set_str(r53543, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53544);
        mpfr_init(r53545);
        mpfr_init(r53546);
        mpfr_init(r53547);
        mpfr_init(r53548);
        mpfr_init(r53549);
        mpfr_init(r53550);
        mpfr_init(r53551);
        mpfr_init(r53552);
        mpfr_init(r53553);
        mpfr_init(r53554);
        mpfr_init(r53555);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r53533, r53531, r53532, MPFR_RNDN);
        mpfr_log(r53534, r53533, MPFR_RNDN);
        mpfr_sqr(r53535, r53534, MPFR_RNDN);
        mpfr_set_d(r53536, x, MPFR_RNDN);
        mpfr_set_d(r53537, y, MPFR_RNDN);
        ;
        mpfr_mul(r53539, r53537, r53538, MPFR_RNDN);
        mpfr_div(r53540, r53536, r53539, MPFR_RNDN);
        mpfr_mul(r53541, r53532, r53540, MPFR_RNDN);
        mpfr_set_d(r53542, z, MPFR_RNDN);
        ;
        mpfr_mul(r53544, r53542, r53543, MPFR_RNDN);
        mpfr_div(r53545, r53541, r53544, MPFR_RNDN);
        mpfr_set_d(r53546, t, MPFR_RNDN);
        mpfr_sqrt(r53547, r53546, MPFR_RNDN);
        mpfr_mul(r53548, r53545, r53547, MPFR_RNDN);
        mpfr_acos(r53549, r53548, MPFR_RNDN);
        mpfr_log(r53550, r53549, MPFR_RNDN);
        mpfr_sqr(r53551, r53550, MPFR_RNDN);
        mpfr_sub(r53552, r53535, r53551, MPFR_RNDN);
        mpfr_sub(r53553, r53534, r53550, MPFR_RNDN);
        mpfr_div(r53554, r53552, r53553, MPFR_RNDN);
        mpfr_exp(r53555, r53554, MPFR_RNDN);
        return mpfr_get_d(r53555, MPFR_RNDN);
}

static mpfr_t r53556, r53557, r53558, r53559, r53560, r53561, r53562, r53563, r53564, r53565, r53566, r53567, r53568, r53569, r53570, r53571, r53572, r53573, r53574, r53575, r53576, r53577, r53578, r53579, r53580;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53556, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53557, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53558);
        mpfr_init(r53559);
        mpfr_init(r53560);
        mpfr_init(r53561);
        mpfr_init(r53562);
        mpfr_init_set_str(r53563, "27.0", 10, MPFR_RNDN);
        mpfr_init(r53564);
        mpfr_init(r53565);
        mpfr_init(r53566);
        mpfr_init(r53567);
        mpfr_init_set_str(r53568, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53569);
        mpfr_init(r53570);
        mpfr_init(r53571);
        mpfr_init(r53572);
        mpfr_init(r53573);
        mpfr_init(r53574);
        mpfr_init(r53575);
        mpfr_init(r53576);
        mpfr_init(r53577);
        mpfr_init(r53578);
        mpfr_init(r53579);
        mpfr_init(r53580);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r53558, r53556, r53557, MPFR_RNDN);
        mpfr_log(r53559, r53558, MPFR_RNDN);
        mpfr_sqr(r53560, r53559, MPFR_RNDN);
        mpfr_set_d(r53561, x, MPFR_RNDN);
        mpfr_set_d(r53562, y, MPFR_RNDN);
        ;
        mpfr_mul(r53564, r53562, r53563, MPFR_RNDN);
        mpfr_div(r53565, r53561, r53564, MPFR_RNDN);
        mpfr_mul(r53566, r53557, r53565, MPFR_RNDN);
        mpfr_set_d(r53567, z, MPFR_RNDN);
        ;
        mpfr_mul(r53569, r53567, r53568, MPFR_RNDN);
        mpfr_div(r53570, r53566, r53569, MPFR_RNDN);
        mpfr_set_d(r53571, t, MPFR_RNDN);
        mpfr_sqrt(r53572, r53571, MPFR_RNDN);
        mpfr_mul(r53573, r53570, r53572, MPFR_RNDN);
        mpfr_acos(r53574, r53573, MPFR_RNDN);
        mpfr_log(r53575, r53574, MPFR_RNDN);
        mpfr_sqr(r53576, r53575, MPFR_RNDN);
        mpfr_sub(r53577, r53560, r53576, MPFR_RNDN);
        mpfr_sub(r53578, r53559, r53575, MPFR_RNDN);
        mpfr_div(r53579, r53577, r53578, MPFR_RNDN);
        mpfr_exp(r53580, r53579, MPFR_RNDN);
        return mpfr_get_d(r53580, MPFR_RNDN);
}

