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

char *name = "From Warwick Tucker's Validated Numerics";

double f_if() {
        float r8379 = 333.75f;
        float r8380 = 33096.0f;
        float r8381 = 6.0f;
        float r8382 = pow(r8380, r8381);
        float r8383 = r8379 * r8382;
        float r8384 = 77617.0f;
        float r8385 = r8384 * r8384;
        float r8386 = 11.0f;
        float r8387 = r8386 * r8385;
        float r8388 = r8380 * r8380;
        float r8389 = r8387 * r8388;
        float r8390 = -r8382;
        float r8391 = r8389 + r8390;
        float r8392 = -121.0f;
        float r8393 = 4.0f;
        float r8394 = pow(r8380, r8393);
        float r8395 = r8392 * r8394;
        float r8396 = r8391 + r8395;
        float r8397 = -2.0f;
        float r8398 = r8396 + r8397;
        float r8399 = r8385 * r8398;
        float r8400 = r8383 + r8399;
        float r8401 = 5.5f;
        float r8402 = 8.0f;
        float r8403 = pow(r8380, r8402);
        float r8404 = r8401 * r8403;
        float r8405 = r8400 + r8404;
        float r8406 = 2.0f;
        float r8407 = r8406 * r8380;
        float r8408 = r8384 / r8407;
        float r8409 = r8405 + r8408;
        return r8409;
}

double f_id() {
        double r8410 = 333.75;
        double r8411 = 33096.0;
        double r8412 = 6.0;
        double r8413 = pow(r8411, r8412);
        double r8414 = r8410 * r8413;
        double r8415 = 77617.0;
        double r8416 = r8415 * r8415;
        double r8417 = 11.0;
        double r8418 = r8417 * r8416;
        double r8419 = r8411 * r8411;
        double r8420 = r8418 * r8419;
        double r8421 = -r8413;
        double r8422 = r8420 + r8421;
        double r8423 = -121.0;
        double r8424 = 4.0;
        double r8425 = pow(r8411, r8424);
        double r8426 = r8423 * r8425;
        double r8427 = r8422 + r8426;
        double r8428 = -2.0;
        double r8429 = r8427 + r8428;
        double r8430 = r8416 * r8429;
        double r8431 = r8414 + r8430;
        double r8432 = 5.5;
        double r8433 = 8.0;
        double r8434 = pow(r8411, r8433);
        double r8435 = r8432 * r8434;
        double r8436 = r8431 + r8435;
        double r8437 = 2.0;
        double r8438 = r8437 * r8411;
        double r8439 = r8415 / r8438;
        double r8440 = r8436 + r8439;
        return r8440;
}


double f_of() {
        float r8441 = 77617.0f;
        float r8442 = r8441 * r8441;
        float r8443 = 33096.0f;
        float r8444 = r8443 * r8443;
        float r8445 = r8442 * r8444;
        float r8446 = 11.0f;
        float r8447 = r8445 * r8446;
        float r8448 = 6.0f;
        float r8449 = pow(r8443, r8448);
        float r8450 = -121.0f;
        float r8451 = 4.0f;
        float r8452 = pow(r8443, r8451);
        float r8453 = -2.0f;
        float r8454 = fma(r8450, r8452, r8453);
        float r8455 = r8449 - r8454;
        float r8456 = r8447 - r8455;
        float r8457 = 333.75f;
        float r8458 = 8.0f;
        float r8459 = pow(r8443, r8458);
        float r8460 = 5.5f;
        float r8461 = 2.0f;
        float r8462 = r8441 / r8461;
        float r8463 = r8462 / r8443;
        float r8464 = fma(r8459, r8460, r8463);
        float r8465 = fma(r8449, r8457, r8464);
        float r8466 = fma(r8456, r8442, r8465);
        return r8466;
}

double f_od() {
        double r8467 = 77617.0;
        double r8468 = r8467 * r8467;
        double r8469 = 33096.0;
        double r8470 = r8469 * r8469;
        double r8471 = r8468 * r8470;
        double r8472 = 11.0;
        double r8473 = r8471 * r8472;
        double r8474 = 6.0;
        double r8475 = pow(r8469, r8474);
        double r8476 = -121.0;
        double r8477 = 4.0;
        double r8478 = pow(r8469, r8477);
        double r8479 = -2.0;
        double r8480 = fma(r8476, r8478, r8479);
        double r8481 = r8475 - r8480;
        double r8482 = r8473 - r8481;
        double r8483 = 333.75;
        double r8484 = 8.0;
        double r8485 = pow(r8469, r8484);
        double r8486 = 5.5;
        double r8487 = 2.0;
        double r8488 = r8467 / r8487;
        double r8489 = r8488 / r8469;
        double r8490 = fma(r8485, r8486, r8489);
        double r8491 = fma(r8475, r8483, r8490);
        double r8492 = fma(r8482, r8468, r8491);
        return r8492;
}

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 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;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8493, "333.75", 10, MPFR_RNDN);
        mpfr_init_set_str(r8494, "33096", 10, MPFR_RNDN);
        mpfr_init_set_str(r8495, "6", 10, MPFR_RNDN);
        mpfr_init(r8496);
        mpfr_init(r8497);
        mpfr_init_set_str(r8498, "77617", 10, MPFR_RNDN);
        mpfr_init(r8499);
        mpfr_init_set_str(r8500, "11", 10, MPFR_RNDN);
        mpfr_init(r8501);
        mpfr_init(r8502);
        mpfr_init(r8503);
        mpfr_init(r8504);
        mpfr_init(r8505);
        mpfr_init_set_str(r8506, "-121", 10, MPFR_RNDN);
        mpfr_init_set_str(r8507, "4", 10, MPFR_RNDN);
        mpfr_init(r8508);
        mpfr_init(r8509);
        mpfr_init(r8510);
        mpfr_init_set_str(r8511, "-2", 10, MPFR_RNDN);
        mpfr_init(r8512);
        mpfr_init(r8513);
        mpfr_init(r8514);
        mpfr_init_set_str(r8515, "5.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8516, "8", 10, MPFR_RNDN);
        mpfr_init(r8517);
        mpfr_init(r8518);
        mpfr_init(r8519);
        mpfr_init_set_str(r8520, "2", 10, MPFR_RNDN);
        mpfr_init(r8521);
        mpfr_init(r8522);
        mpfr_init(r8523);
}

double f_im() {
        ;
        ;
        ;
        mpfr_pow(r8496, r8494, r8495, MPFR_RNDN);
        mpfr_mul(r8497, r8493, r8496, MPFR_RNDN);
        ;
        mpfr_mul(r8499, r8498, r8498, MPFR_RNDN);
        ;
        mpfr_mul(r8501, r8500, r8499, MPFR_RNDN);
        mpfr_mul(r8502, r8494, r8494, MPFR_RNDN);
        mpfr_mul(r8503, r8501, r8502, MPFR_RNDN);
        mpfr_neg(r8504, r8496, MPFR_RNDN);
        mpfr_add(r8505, r8503, r8504, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8508, r8494, r8507, MPFR_RNDN);
        mpfr_mul(r8509, r8506, r8508, MPFR_RNDN);
        mpfr_add(r8510, r8505, r8509, MPFR_RNDN);
        ;
        mpfr_add(r8512, r8510, r8511, MPFR_RNDN);
        mpfr_mul(r8513, r8499, r8512, MPFR_RNDN);
        mpfr_add(r8514, r8497, r8513, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8517, r8494, r8516, MPFR_RNDN);
        mpfr_mul(r8518, r8515, r8517, MPFR_RNDN);
        mpfr_add(r8519, r8514, r8518, MPFR_RNDN);
        ;
        mpfr_mul(r8521, r8520, r8494, MPFR_RNDN);
        mpfr_div(r8522, r8498, r8521, MPFR_RNDN);
        mpfr_add(r8523, r8519, r8522, MPFR_RNDN);
        return mpfr_get_d(r8523, MPFR_RNDN);
}

static mpfr_t r8524, r8525, r8526, r8527, r8528, r8529, r8530, r8531, r8532, r8533, r8534, r8535, r8536, r8537, r8538, r8539, r8540, r8541, r8542, r8543, r8544, r8545, r8546, r8547, r8548, r8549;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8524, "77617", 10, MPFR_RNDN);
        mpfr_init(r8525);
        mpfr_init_set_str(r8526, "33096", 10, MPFR_RNDN);
        mpfr_init(r8527);
        mpfr_init(r8528);
        mpfr_init_set_str(r8529, "11", 10, MPFR_RNDN);
        mpfr_init(r8530);
        mpfr_init_set_str(r8531, "6", 10, MPFR_RNDN);
        mpfr_init(r8532);
        mpfr_init_set_str(r8533, "-121", 10, MPFR_RNDN);
        mpfr_init_set_str(r8534, "4", 10, MPFR_RNDN);
        mpfr_init(r8535);
        mpfr_init_set_str(r8536, "-2", 10, MPFR_RNDN);
        mpfr_init(r8537);
        mpfr_init(r8538);
        mpfr_init(r8539);
        mpfr_init_set_str(r8540, "333.75", 10, MPFR_RNDN);
        mpfr_init_set_str(r8541, "8", 10, MPFR_RNDN);
        mpfr_init(r8542);
        mpfr_init_set_str(r8543, "5.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8544, "2", 10, MPFR_RNDN);
        mpfr_init(r8545);
        mpfr_init(r8546);
        mpfr_init(r8547);
        mpfr_init(r8548);
        mpfr_init(r8549);
}

double f_fm() {
        ;
        mpfr_mul(r8525, r8524, r8524, MPFR_RNDN);
        ;
        mpfr_mul(r8527, r8526, r8526, MPFR_RNDN);
        mpfr_mul(r8528, r8525, r8527, MPFR_RNDN);
        ;
        mpfr_mul(r8530, r8528, r8529, MPFR_RNDN);
        ;
        mpfr_pow(r8532, r8526, r8531, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8535, r8526, r8534, MPFR_RNDN);
        ;
        mpfr_fma(r8537, r8533, r8535, r8536, MPFR_RNDN);
        mpfr_sub(r8538, r8532, r8537, MPFR_RNDN);
        mpfr_sub(r8539, r8530, r8538, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8542, r8526, r8541, MPFR_RNDN);
        ;
        ;
        mpfr_div(r8545, r8524, r8544, MPFR_RNDN);
        mpfr_div(r8546, r8545, r8526, MPFR_RNDN);
        mpfr_fma(r8547, r8542, r8543, r8546, MPFR_RNDN);
        mpfr_fma(r8548, r8532, r8540, r8547, MPFR_RNDN);
        mpfr_fma(r8549, r8539, r8525, r8548, MPFR_RNDN);
        return mpfr_get_d(r8549, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8550, "77617", 10, MPFR_RNDN);
        mpfr_init(r8551);
        mpfr_init_set_str(r8552, "33096", 10, MPFR_RNDN);
        mpfr_init(r8553);
        mpfr_init(r8554);
        mpfr_init_set_str(r8555, "11", 10, MPFR_RNDN);
        mpfr_init(r8556);
        mpfr_init_set_str(r8557, "6", 10, MPFR_RNDN);
        mpfr_init(r8558);
        mpfr_init_set_str(r8559, "-121", 10, MPFR_RNDN);
        mpfr_init_set_str(r8560, "4", 10, MPFR_RNDN);
        mpfr_init(r8561);
        mpfr_init_set_str(r8562, "-2", 10, MPFR_RNDN);
        mpfr_init(r8563);
        mpfr_init(r8564);
        mpfr_init(r8565);
        mpfr_init_set_str(r8566, "333.75", 10, MPFR_RNDN);
        mpfr_init_set_str(r8567, "8", 10, MPFR_RNDN);
        mpfr_init(r8568);
        mpfr_init_set_str(r8569, "5.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8570, "2", 10, MPFR_RNDN);
        mpfr_init(r8571);
        mpfr_init(r8572);
        mpfr_init(r8573);
        mpfr_init(r8574);
        mpfr_init(r8575);
}

double f_dm() {
        ;
        mpfr_mul(r8551, r8550, r8550, MPFR_RNDN);
        ;
        mpfr_mul(r8553, r8552, r8552, MPFR_RNDN);
        mpfr_mul(r8554, r8551, r8553, MPFR_RNDN);
        ;
        mpfr_mul(r8556, r8554, r8555, MPFR_RNDN);
        ;
        mpfr_pow(r8558, r8552, r8557, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8561, r8552, r8560, MPFR_RNDN);
        ;
        mpfr_fma(r8563, r8559, r8561, r8562, MPFR_RNDN);
        mpfr_sub(r8564, r8558, r8563, MPFR_RNDN);
        mpfr_sub(r8565, r8556, r8564, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8568, r8552, r8567, MPFR_RNDN);
        ;
        ;
        mpfr_div(r8571, r8550, r8570, MPFR_RNDN);
        mpfr_div(r8572, r8571, r8552, MPFR_RNDN);
        mpfr_fma(r8573, r8568, r8569, r8572, MPFR_RNDN);
        mpfr_fma(r8574, r8558, r8566, r8573, MPFR_RNDN);
        mpfr_fma(r8575, r8565, r8551, r8574, MPFR_RNDN);
        return mpfr_get_d(r8575, MPFR_RNDN);
}

