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

char *name = "Toniolo and Linder, Equation (10+)";

double f_if(float t, float l, float k) {
        float r8455 = 2.0f;
        float r8456 = t;
        float r8457 = 3.0f;
        float r8458 = pow(r8456, r8457);
        float r8459 = l;
        float r8460 = r8459 * r8459;
        float r8461 = r8458 / r8460;
        float r8462 = k;
        float r8463 = sin(r8462);
        float r8464 = r8461 * r8463;
        float r8465 = tan(r8462);
        float r8466 = r8464 * r8465;
        float r8467 = 1.0f;
        float r8468 = r8462 / r8456;
        float r8469 = pow(r8468, r8455);
        float r8470 = r8467 + r8469;
        float r8471 = r8470 + r8467;
        float r8472 = r8466 * r8471;
        float r8473 = r8455 / r8472;
        return r8473;
}

double f_id(double t, double l, double k) {
        double r8474 = 2.0;
        double r8475 = t;
        double r8476 = 3.0;
        double r8477 = pow(r8475, r8476);
        double r8478 = l;
        double r8479 = r8478 * r8478;
        double r8480 = r8477 / r8479;
        double r8481 = k;
        double r8482 = sin(r8481);
        double r8483 = r8480 * r8482;
        double r8484 = tan(r8481);
        double r8485 = r8483 * r8484;
        double r8486 = 1.0;
        double r8487 = r8481 / r8475;
        double r8488 = pow(r8487, r8474);
        double r8489 = r8486 + r8488;
        double r8490 = r8489 + r8486;
        double r8491 = r8485 * r8490;
        double r8492 = r8474 / r8491;
        return r8492;
}


double f_of(float t, float l, float k) {
        float r8493 = 2.0f;
        float r8494 = t;
        float r8495 = r8493 / r8494;
        float r8496 = cbrt(r8495);
        float r8497 = k;
        float r8498 = sin(r8497);
        float r8499 = l;
        float r8500 = r8499 / r8494;
        float r8501 = r8498 / r8500;
        float r8502 = cbrt(r8501);
        float r8503 = r8502 * r8502;
        float r8504 = r8502 * r8503;
        float r8505 = cbrt(r8504);
        float r8506 = r8502 * r8505;
        float r8507 = r8496 / r8506;
        float r8508 = r8496 / r8502;
        float r8509 = r8496 / r8501;
        float r8510 = cos(r8497);
        float r8511 = 1.0f;
        float r8512 = r8511 + r8511;
        float r8513 = r8497 / r8494;
        float r8514 = r8513 * r8513;
        float r8515 = r8512 + r8514;
        float r8516 = r8510 / r8515;
        float r8517 = r8509 * r8516;
        float r8518 = r8508 * r8517;
        float r8519 = r8507 * r8518;
        return r8519;
}

double f_od(double t, double l, double k) {
        double r8520 = 2.0;
        double r8521 = t;
        double r8522 = r8520 / r8521;
        double r8523 = cbrt(r8522);
        double r8524 = k;
        double r8525 = sin(r8524);
        double r8526 = l;
        double r8527 = r8526 / r8521;
        double r8528 = r8525 / r8527;
        double r8529 = cbrt(r8528);
        double r8530 = r8529 * r8529;
        double r8531 = r8529 * r8530;
        double r8532 = cbrt(r8531);
        double r8533 = r8529 * r8532;
        double r8534 = r8523 / r8533;
        double r8535 = r8523 / r8529;
        double r8536 = r8523 / r8528;
        double r8537 = cos(r8524);
        double r8538 = 1.0;
        double r8539 = r8538 + r8538;
        double r8540 = r8524 / r8521;
        double r8541 = r8540 * r8540;
        double r8542 = r8539 + r8541;
        double r8543 = r8537 / r8542;
        double r8544 = r8536 * r8543;
        double r8545 = r8535 * r8544;
        double r8546 = r8534 * r8545;
        return r8546;
}

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 r8547, r8548, r8549, r8550, r8551, r8552, r8553, r8554, r8555, r8556, r8557, r8558, r8559, r8560, r8561, r8562, r8563, r8564, r8565;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8547, "2", 10, MPFR_RNDN);
        mpfr_init(r8548);
        mpfr_init_set_str(r8549, "3", 10, MPFR_RNDN);
        mpfr_init(r8550);
        mpfr_init(r8551);
        mpfr_init(r8552);
        mpfr_init(r8553);
        mpfr_init(r8554);
        mpfr_init(r8555);
        mpfr_init(r8556);
        mpfr_init(r8557);
        mpfr_init(r8558);
        mpfr_init_set_str(r8559, "1", 10, MPFR_RNDN);
        mpfr_init(r8560);
        mpfr_init(r8561);
        mpfr_init(r8562);
        mpfr_init(r8563);
        mpfr_init(r8564);
        mpfr_init(r8565);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r8548, t, MPFR_RNDN);
        ;
        mpfr_pow(r8550, r8548, r8549, MPFR_RNDN);
        mpfr_set_d(r8551, l, MPFR_RNDN);
        mpfr_mul(r8552, r8551, r8551, MPFR_RNDN);
        mpfr_div(r8553, r8550, r8552, MPFR_RNDN);
        mpfr_set_d(r8554, k, MPFR_RNDN);
        mpfr_sin(r8555, r8554, MPFR_RNDN);
        mpfr_mul(r8556, r8553, r8555, MPFR_RNDN);
        mpfr_tan(r8557, r8554, MPFR_RNDN);
        mpfr_mul(r8558, r8556, r8557, MPFR_RNDN);
        ;
        mpfr_div(r8560, r8554, r8548, MPFR_RNDN);
        mpfr_pow(r8561, r8560, r8547, MPFR_RNDN);
        mpfr_add(r8562, r8559, r8561, MPFR_RNDN);
        mpfr_add(r8563, r8562, r8559, MPFR_RNDN);
        mpfr_mul(r8564, r8558, r8563, MPFR_RNDN);
        mpfr_div(r8565, r8547, r8564, MPFR_RNDN);
        return mpfr_get_d(r8565, MPFR_RNDN);
}

static mpfr_t r8566, r8567, r8568, r8569, r8570, r8571, r8572, r8573, r8574, r8575, r8576, r8577, r8578, r8579, r8580, r8581, r8582, r8583, r8584, r8585, r8586, r8587, r8588, r8589, r8590, r8591, r8592;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8566, "2", 10, MPFR_RNDN);
        mpfr_init(r8567);
        mpfr_init(r8568);
        mpfr_init(r8569);
        mpfr_init(r8570);
        mpfr_init(r8571);
        mpfr_init(r8572);
        mpfr_init(r8573);
        mpfr_init(r8574);
        mpfr_init(r8575);
        mpfr_init(r8576);
        mpfr_init(r8577);
        mpfr_init(r8578);
        mpfr_init(r8579);
        mpfr_init(r8580);
        mpfr_init(r8581);
        mpfr_init(r8582);
        mpfr_init(r8583);
        mpfr_init_set_str(r8584, "1", 10, MPFR_RNDN);
        mpfr_init(r8585);
        mpfr_init(r8586);
        mpfr_init(r8587);
        mpfr_init(r8588);
        mpfr_init(r8589);
        mpfr_init(r8590);
        mpfr_init(r8591);
        mpfr_init(r8592);
}

double f_fm(double t, double l, double k) {
        ;
        mpfr_set_d(r8567, t, MPFR_RNDN);
        mpfr_div(r8568, r8566, r8567, MPFR_RNDN);
        mpfr_cbrt(r8569, r8568, MPFR_RNDN);
        mpfr_set_d(r8570, k, MPFR_RNDN);
        mpfr_sin(r8571, r8570, MPFR_RNDN);
        mpfr_set_d(r8572, l, MPFR_RNDN);
        mpfr_div(r8573, r8572, r8567, MPFR_RNDN);
        mpfr_div(r8574, r8571, r8573, MPFR_RNDN);
        mpfr_cbrt(r8575, r8574, MPFR_RNDN);
        mpfr_mul(r8576, r8575, r8575, MPFR_RNDN);
        mpfr_mul(r8577, r8575, r8576, MPFR_RNDN);
        mpfr_cbrt(r8578, r8577, MPFR_RNDN);
        mpfr_mul(r8579, r8575, r8578, MPFR_RNDN);
        mpfr_div(r8580, r8569, r8579, MPFR_RNDN);
        mpfr_div(r8581, r8569, r8575, MPFR_RNDN);
        mpfr_div(r8582, r8569, r8574, MPFR_RNDN);
        mpfr_cos(r8583, r8570, MPFR_RNDN);
        ;
        mpfr_add(r8585, r8584, r8584, MPFR_RNDN);
        mpfr_div(r8586, r8570, r8567, MPFR_RNDN);
        mpfr_mul(r8587, r8586, r8586, MPFR_RNDN);
        mpfr_add(r8588, r8585, r8587, MPFR_RNDN);
        mpfr_div(r8589, r8583, r8588, MPFR_RNDN);
        mpfr_mul(r8590, r8582, r8589, MPFR_RNDN);
        mpfr_mul(r8591, r8581, r8590, MPFR_RNDN);
        mpfr_mul(r8592, r8580, r8591, MPFR_RNDN);
        return mpfr_get_d(r8592, MPFR_RNDN);
}

static mpfr_t r8593, r8594, r8595, r8596, r8597, r8598, r8599, r8600, r8601, r8602, r8603, r8604, r8605, r8606, r8607, r8608, r8609, r8610, r8611, r8612, r8613, r8614, r8615, r8616, r8617, r8618, r8619;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8593, "2", 10, MPFR_RNDN);
        mpfr_init(r8594);
        mpfr_init(r8595);
        mpfr_init(r8596);
        mpfr_init(r8597);
        mpfr_init(r8598);
        mpfr_init(r8599);
        mpfr_init(r8600);
        mpfr_init(r8601);
        mpfr_init(r8602);
        mpfr_init(r8603);
        mpfr_init(r8604);
        mpfr_init(r8605);
        mpfr_init(r8606);
        mpfr_init(r8607);
        mpfr_init(r8608);
        mpfr_init(r8609);
        mpfr_init(r8610);
        mpfr_init_set_str(r8611, "1", 10, MPFR_RNDN);
        mpfr_init(r8612);
        mpfr_init(r8613);
        mpfr_init(r8614);
        mpfr_init(r8615);
        mpfr_init(r8616);
        mpfr_init(r8617);
        mpfr_init(r8618);
        mpfr_init(r8619);
}

double f_dm(double t, double l, double k) {
        ;
        mpfr_set_d(r8594, t, MPFR_RNDN);
        mpfr_div(r8595, r8593, r8594, MPFR_RNDN);
        mpfr_cbrt(r8596, r8595, MPFR_RNDN);
        mpfr_set_d(r8597, k, MPFR_RNDN);
        mpfr_sin(r8598, r8597, MPFR_RNDN);
        mpfr_set_d(r8599, l, MPFR_RNDN);
        mpfr_div(r8600, r8599, r8594, MPFR_RNDN);
        mpfr_div(r8601, r8598, r8600, MPFR_RNDN);
        mpfr_cbrt(r8602, r8601, MPFR_RNDN);
        mpfr_mul(r8603, r8602, r8602, MPFR_RNDN);
        mpfr_mul(r8604, r8602, r8603, MPFR_RNDN);
        mpfr_cbrt(r8605, r8604, MPFR_RNDN);
        mpfr_mul(r8606, r8602, r8605, MPFR_RNDN);
        mpfr_div(r8607, r8596, r8606, MPFR_RNDN);
        mpfr_div(r8608, r8596, r8602, MPFR_RNDN);
        mpfr_div(r8609, r8596, r8601, MPFR_RNDN);
        mpfr_cos(r8610, r8597, MPFR_RNDN);
        ;
        mpfr_add(r8612, r8611, r8611, MPFR_RNDN);
        mpfr_div(r8613, r8597, r8594, MPFR_RNDN);
        mpfr_mul(r8614, r8613, r8613, MPFR_RNDN);
        mpfr_add(r8615, r8612, r8614, MPFR_RNDN);
        mpfr_div(r8616, r8610, r8615, MPFR_RNDN);
        mpfr_mul(r8617, r8609, r8616, MPFR_RNDN);
        mpfr_mul(r8618, r8608, r8617, MPFR_RNDN);
        mpfr_mul(r8619, r8607, r8618, MPFR_RNDN);
        return mpfr_get_d(r8619, MPFR_RNDN);
}

