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

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

double f_if(float x, float l, float t) {
        float r8342 = 2;
        float r8343 = sqrt(r8342);
        float r8344 = t;
        float r8345 = r8343 * r8344;
        float r8346 = x;
        float r8347 = 1;
        float r8348 = r8346 + r8347;
        float r8349 = r8346 - r8347;
        float r8350 = r8348 / r8349;
        float r8351 = l;
        float r8352 = r8351 * r8351;
        float r8353 = r8344 * r8344;
        float r8354 = r8342 * r8353;
        float r8355 = r8352 + r8354;
        float r8356 = r8350 * r8355;
        float r8357 = r8356 - r8352;
        float r8358 = sqrt(r8357);
        float r8359 = r8345 / r8358;
        return r8359;
}

double f_id(double x, double l, double t) {
        double r8360 = 2;
        double r8361 = sqrt(r8360);
        double r8362 = t;
        double r8363 = r8361 * r8362;
        double r8364 = x;
        double r8365 = 1;
        double r8366 = r8364 + r8365;
        double r8367 = r8364 - r8365;
        double r8368 = r8366 / r8367;
        double r8369 = l;
        double r8370 = r8369 * r8369;
        double r8371 = r8362 * r8362;
        double r8372 = r8360 * r8371;
        double r8373 = r8370 + r8372;
        double r8374 = r8368 * r8373;
        double r8375 = r8374 - r8370;
        double r8376 = sqrt(r8375);
        double r8377 = r8363 / r8376;
        return r8377;
}


double f_of(float x, float l, float t) {
        float r8378 = t;
        float r8379 = -3.0455787307621947e+145;
        bool r8380 = r8378 <= r8379;
        float r8381 = 2;
        float r8382 = sqrt(r8381);
        float r8383 = r8382 * r8378;
        float r8384 = 1;
        float r8385 = r8384 - r8381;
        float r8386 = x;
        float r8387 = r8386 * r8386;
        float r8388 = r8382 * r8387;
        float r8389 = r8378 / r8388;
        float r8390 = r8385 * r8389;
        float r8391 = r8381 / r8386;
        float r8392 = r8391 / r8382;
        float r8393 = r8382 + r8392;
        float r8394 = r8378 * r8393;
        float r8395 = r8390 - r8394;
        float r8396 = r8383 / r8395;
        float r8397 = 5.5216541725427274e-288;
        bool r8398 = r8378 <= r8397;
        float r8399 = 3.2837604703102175e-231;
        bool r8400 = r8378 <= r8399;
        float r8401 = 4.088619728431962e+114;
        bool r8402 = r8378 <= r8401;
        float r8403 = !r8402;
        bool r8404 = r8400 || r8403;
        float r8405 = !r8404;
        bool r8406 = r8398 || r8405;
        float r8407 = l;
        float r8408 = r8407 * r8391;
        float r8409 = r8408 * r8407;
        float r8410 = 4;
        float r8411 = r8410 / r8386;
        float r8412 = r8381 + r8411;
        float r8413 = r8378 * r8378;
        float r8414 = r8412 * r8413;
        float r8415 = r8409 + r8414;
        float r8416 = sqrt(r8415);
        float r8417 = r8383 / r8416;
        float r8418 = r8381 - r8384;
        float r8419 = r8378 / r8387;
        float r8420 = r8419 / r8382;
        float r8421 = r8418 * r8420;
        float r8422 = r8394 + r8421;
        float r8423 = r8383 / r8422;
        float r8424 = r8406 ? r8417 : r8423;
        float r8425 = r8380 ? r8396 : r8424;
        return r8425;
}

double f_od(double x, double l, double t) {
        double r8426 = t;
        double r8427 = -3.0455787307621947e+145;
        bool r8428 = r8426 <= r8427;
        double r8429 = 2;
        double r8430 = sqrt(r8429);
        double r8431 = r8430 * r8426;
        double r8432 = 1;
        double r8433 = r8432 - r8429;
        double r8434 = x;
        double r8435 = r8434 * r8434;
        double r8436 = r8430 * r8435;
        double r8437 = r8426 / r8436;
        double r8438 = r8433 * r8437;
        double r8439 = r8429 / r8434;
        double r8440 = r8439 / r8430;
        double r8441 = r8430 + r8440;
        double r8442 = r8426 * r8441;
        double r8443 = r8438 - r8442;
        double r8444 = r8431 / r8443;
        double r8445 = 5.5216541725427274e-288;
        bool r8446 = r8426 <= r8445;
        double r8447 = 3.2837604703102175e-231;
        bool r8448 = r8426 <= r8447;
        double r8449 = 4.088619728431962e+114;
        bool r8450 = r8426 <= r8449;
        double r8451 = !r8450;
        bool r8452 = r8448 || r8451;
        double r8453 = !r8452;
        bool r8454 = r8446 || r8453;
        double r8455 = l;
        double r8456 = r8455 * r8439;
        double r8457 = r8456 * r8455;
        double r8458 = 4;
        double r8459 = r8458 / r8434;
        double r8460 = r8429 + r8459;
        double r8461 = r8426 * r8426;
        double r8462 = r8460 * r8461;
        double r8463 = r8457 + r8462;
        double r8464 = sqrt(r8463);
        double r8465 = r8431 / r8464;
        double r8466 = r8429 - r8432;
        double r8467 = r8426 / r8435;
        double r8468 = r8467 / r8430;
        double r8469 = r8466 * r8468;
        double r8470 = r8442 + r8469;
        double r8471 = r8431 / r8470;
        double r8472 = r8454 ? r8465 : r8471;
        double r8473 = r8428 ? r8444 : r8472;
        return r8473;
}

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 r8474, r8475, r8476, r8477, r8478, r8479, r8480, r8481, r8482, r8483, r8484, r8485, r8486, r8487, r8488, r8489, r8490, r8491;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8474, "2", 10, MPFR_RNDN);
        mpfr_init(r8475);
        mpfr_init(r8476);
        mpfr_init(r8477);
        mpfr_init(r8478);
        mpfr_init_set_str(r8479, "1", 10, MPFR_RNDN);
        mpfr_init(r8480);
        mpfr_init(r8481);
        mpfr_init(r8482);
        mpfr_init(r8483);
        mpfr_init(r8484);
        mpfr_init(r8485);
        mpfr_init(r8486);
        mpfr_init(r8487);
        mpfr_init(r8488);
        mpfr_init(r8489);
        mpfr_init(r8490);
        mpfr_init(r8491);
}

double f_im(double x, double l, double t) {
        ;
        mpfr_sqrt(r8475, r8474, MPFR_RNDN);
        mpfr_set_d(r8476, t, MPFR_RNDN);
        mpfr_mul(r8477, r8475, r8476, MPFR_RNDN);
        mpfr_set_d(r8478, x, MPFR_RNDN);
        ;
        mpfr_add(r8480, r8478, r8479, MPFR_RNDN);
        mpfr_sub(r8481, r8478, r8479, MPFR_RNDN);
        mpfr_div(r8482, r8480, r8481, MPFR_RNDN);
        mpfr_set_d(r8483, l, MPFR_RNDN);
        mpfr_mul(r8484, r8483, r8483, MPFR_RNDN);
        mpfr_mul(r8485, r8476, r8476, MPFR_RNDN);
        mpfr_mul(r8486, r8474, r8485, MPFR_RNDN);
        mpfr_add(r8487, r8484, r8486, MPFR_RNDN);
        mpfr_mul(r8488, r8482, r8487, MPFR_RNDN);
        mpfr_sub(r8489, r8488, r8484, MPFR_RNDN);
        mpfr_sqrt(r8490, r8489, MPFR_RNDN);
        mpfr_div(r8491, r8477, r8490, MPFR_RNDN);
        return mpfr_get_d(r8491, MPFR_RNDN);
}

static mpfr_t r8492, r8493, r8494, r8495, r8496, r8497, r8498, r8499, r8500, r8501, r8502, r8503, r8504, r8505, r8506, r8507, r8508, r8509, r8510, r8511, r8512, r8513, r8514, r8515, r8516, r8517, r8518, r8519, r8520, r8521, r8522, r8523, r8524, r8525, r8526, r8527, r8528, r8529, r8530, r8531, r8532, r8533, r8534, r8535, r8536, r8537, r8538, r8539;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8492);
        mpfr_init_set_str(r8493, "-3.0455787307621947e+145", 10, MPFR_RNDN);
        mpfr_init(r8494);
        mpfr_init_set_str(r8495, "2", 10, MPFR_RNDN);
        mpfr_init(r8496);
        mpfr_init(r8497);
        mpfr_init_set_str(r8498, "1", 10, MPFR_RNDN);
        mpfr_init(r8499);
        mpfr_init(r8500);
        mpfr_init(r8501);
        mpfr_init(r8502);
        mpfr_init(r8503);
        mpfr_init(r8504);
        mpfr_init(r8505);
        mpfr_init(r8506);
        mpfr_init(r8507);
        mpfr_init(r8508);
        mpfr_init(r8509);
        mpfr_init(r8510);
        mpfr_init_set_str(r8511, "5.5216541725427274e-288", 10, MPFR_RNDN);
        mpfr_init(r8512);
        mpfr_init_set_str(r8513, "3.2837604703102175e-231", 10, MPFR_RNDN);
        mpfr_init(r8514);
        mpfr_init_set_str(r8515, "4.088619728431962e+114", 10, MPFR_RNDN);
        mpfr_init(r8516);
        mpfr_init(r8517);
        mpfr_init(r8518);
        mpfr_init(r8519);
        mpfr_init(r8520);
        mpfr_init(r8521);
        mpfr_init(r8522);
        mpfr_init(r8523);
        mpfr_init_set_str(r8524, "4", 10, MPFR_RNDN);
        mpfr_init(r8525);
        mpfr_init(r8526);
        mpfr_init(r8527);
        mpfr_init(r8528);
        mpfr_init(r8529);
        mpfr_init(r8530);
        mpfr_init(r8531);
        mpfr_init(r8532);
        mpfr_init(r8533);
        mpfr_init(r8534);
        mpfr_init(r8535);
        mpfr_init(r8536);
        mpfr_init(r8537);
        mpfr_init(r8538);
        mpfr_init(r8539);
}

double f_fm(double x, double l, double t) {
        mpfr_set_d(r8492, t, MPFR_RNDN);
        ;
        mpfr_set_si(r8494, mpfr_cmp(r8492, r8493) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r8496, r8495, MPFR_RNDN);
        mpfr_mul(r8497, r8496, r8492, MPFR_RNDN);
        ;
        mpfr_sub(r8499, r8498, r8495, MPFR_RNDN);
        mpfr_set_d(r8500, x, MPFR_RNDN);
        mpfr_mul(r8501, r8500, r8500, MPFR_RNDN);
        mpfr_mul(r8502, r8496, r8501, MPFR_RNDN);
        mpfr_div(r8503, r8492, r8502, MPFR_RNDN);
        mpfr_mul(r8504, r8499, r8503, MPFR_RNDN);
        mpfr_div(r8505, r8495, r8500, MPFR_RNDN);
        mpfr_div(r8506, r8505, r8496, MPFR_RNDN);
        mpfr_add(r8507, r8496, r8506, MPFR_RNDN);
        mpfr_mul(r8508, r8492, r8507, MPFR_RNDN);
        mpfr_sub(r8509, r8504, r8508, MPFR_RNDN);
        mpfr_div(r8510, r8497, r8509, MPFR_RNDN);
        ;
        mpfr_set_si(r8512, mpfr_cmp(r8492, r8511) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8514, mpfr_cmp(r8492, r8513) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8516, mpfr_cmp(r8492, r8515) <= 0, MPFR_RNDN);
        mpfr_set_si(r8517, !mpfr_get_si(r8516, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8518, mpfr_get_si(r8514, MPFR_RNDN) || mpfr_get_si(r8517, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8519, !mpfr_get_si(r8518, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8520, mpfr_get_si(r8512, MPFR_RNDN) || mpfr_get_si(r8519, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r8521, l, MPFR_RNDN);
        mpfr_mul(r8522, r8521, r8505, MPFR_RNDN);
        mpfr_mul(r8523, r8522, r8521, MPFR_RNDN);
        ;
        mpfr_div(r8525, r8524, r8500, MPFR_RNDN);
        mpfr_add(r8526, r8495, r8525, MPFR_RNDN);
        mpfr_mul(r8527, r8492, r8492, MPFR_RNDN);
        mpfr_mul(r8528, r8526, r8527, MPFR_RNDN);
        mpfr_add(r8529, r8523, r8528, MPFR_RNDN);
        mpfr_sqrt(r8530, r8529, MPFR_RNDN);
        mpfr_div(r8531, r8497, r8530, MPFR_RNDN);
        mpfr_sub(r8532, r8495, r8498, MPFR_RNDN);
        mpfr_div(r8533, r8492, r8501, MPFR_RNDN);
        mpfr_div(r8534, r8533, r8496, MPFR_RNDN);
        mpfr_mul(r8535, r8532, r8534, MPFR_RNDN);
        mpfr_add(r8536, r8508, r8535, MPFR_RNDN);
        mpfr_div(r8537, r8497, r8536, MPFR_RNDN);
        if (mpfr_get_si(r8520, MPFR_RNDN)) { mpfr_set(r8538, r8531, MPFR_RNDN); } else { mpfr_set(r8538, r8537, MPFR_RNDN); };
        if (mpfr_get_si(r8494, MPFR_RNDN)) { mpfr_set(r8539, r8510, MPFR_RNDN); } else { mpfr_set(r8539, r8538, MPFR_RNDN); };
        return mpfr_get_d(r8539, MPFR_RNDN);
}

static mpfr_t r8540, r8541, r8542, r8543, r8544, r8545, r8546, r8547, r8548, r8549, r8550, r8551, r8552, r8553, r8554, r8555, r8556, r8557, r8558, r8559, r8560, r8561, r8562, r8563, r8564, r8565, r8566, r8567, r8568, r8569, r8570, r8571, r8572, r8573, r8574, r8575, r8576, r8577, r8578, r8579, r8580, r8581, r8582, r8583, r8584, r8585, r8586, r8587;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8540);
        mpfr_init_set_str(r8541, "-3.0455787307621947e+145", 10, MPFR_RNDN);
        mpfr_init(r8542);
        mpfr_init_set_str(r8543, "2", 10, MPFR_RNDN);
        mpfr_init(r8544);
        mpfr_init(r8545);
        mpfr_init_set_str(r8546, "1", 10, MPFR_RNDN);
        mpfr_init(r8547);
        mpfr_init(r8548);
        mpfr_init(r8549);
        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, "5.5216541725427274e-288", 10, MPFR_RNDN);
        mpfr_init(r8560);
        mpfr_init_set_str(r8561, "3.2837604703102175e-231", 10, MPFR_RNDN);
        mpfr_init(r8562);
        mpfr_init_set_str(r8563, "4.088619728431962e+114", 10, MPFR_RNDN);
        mpfr_init(r8564);
        mpfr_init(r8565);
        mpfr_init(r8566);
        mpfr_init(r8567);
        mpfr_init(r8568);
        mpfr_init(r8569);
        mpfr_init(r8570);
        mpfr_init(r8571);
        mpfr_init_set_str(r8572, "4", 10, MPFR_RNDN);
        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(r8584);
        mpfr_init(r8585);
        mpfr_init(r8586);
        mpfr_init(r8587);
}

double f_dm(double x, double l, double t) {
        mpfr_set_d(r8540, t, MPFR_RNDN);
        ;
        mpfr_set_si(r8542, mpfr_cmp(r8540, r8541) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r8544, r8543, MPFR_RNDN);
        mpfr_mul(r8545, r8544, r8540, MPFR_RNDN);
        ;
        mpfr_sub(r8547, r8546, r8543, MPFR_RNDN);
        mpfr_set_d(r8548, x, MPFR_RNDN);
        mpfr_mul(r8549, r8548, r8548, MPFR_RNDN);
        mpfr_mul(r8550, r8544, r8549, MPFR_RNDN);
        mpfr_div(r8551, r8540, r8550, MPFR_RNDN);
        mpfr_mul(r8552, r8547, r8551, MPFR_RNDN);
        mpfr_div(r8553, r8543, r8548, MPFR_RNDN);
        mpfr_div(r8554, r8553, r8544, MPFR_RNDN);
        mpfr_add(r8555, r8544, r8554, MPFR_RNDN);
        mpfr_mul(r8556, r8540, r8555, MPFR_RNDN);
        mpfr_sub(r8557, r8552, r8556, MPFR_RNDN);
        mpfr_div(r8558, r8545, r8557, MPFR_RNDN);
        ;
        mpfr_set_si(r8560, mpfr_cmp(r8540, r8559) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8562, mpfr_cmp(r8540, r8561) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8564, mpfr_cmp(r8540, r8563) <= 0, MPFR_RNDN);
        mpfr_set_si(r8565, !mpfr_get_si(r8564, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8566, mpfr_get_si(r8562, MPFR_RNDN) || mpfr_get_si(r8565, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8567, !mpfr_get_si(r8566, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8568, mpfr_get_si(r8560, MPFR_RNDN) || mpfr_get_si(r8567, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r8569, l, MPFR_RNDN);
        mpfr_mul(r8570, r8569, r8553, MPFR_RNDN);
        mpfr_mul(r8571, r8570, r8569, MPFR_RNDN);
        ;
        mpfr_div(r8573, r8572, r8548, MPFR_RNDN);
        mpfr_add(r8574, r8543, r8573, MPFR_RNDN);
        mpfr_mul(r8575, r8540, r8540, MPFR_RNDN);
        mpfr_mul(r8576, r8574, r8575, MPFR_RNDN);
        mpfr_add(r8577, r8571, r8576, MPFR_RNDN);
        mpfr_sqrt(r8578, r8577, MPFR_RNDN);
        mpfr_div(r8579, r8545, r8578, MPFR_RNDN);
        mpfr_sub(r8580, r8543, r8546, MPFR_RNDN);
        mpfr_div(r8581, r8540, r8549, MPFR_RNDN);
        mpfr_div(r8582, r8581, r8544, MPFR_RNDN);
        mpfr_mul(r8583, r8580, r8582, MPFR_RNDN);
        mpfr_add(r8584, r8556, r8583, MPFR_RNDN);
        mpfr_div(r8585, r8545, r8584, MPFR_RNDN);
        if (mpfr_get_si(r8568, MPFR_RNDN)) { mpfr_set(r8586, r8579, MPFR_RNDN); } else { mpfr_set(r8586, r8585, MPFR_RNDN); };
        if (mpfr_get_si(r8542, MPFR_RNDN)) { mpfr_set(r8587, r8558, MPFR_RNDN); } else { mpfr_set(r8587, r8586, MPFR_RNDN); };
        return mpfr_get_d(r8587, MPFR_RNDN);
}

