#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 r8364 = 333.75f;
        float r8365 = 33096.0f;
        float r8366 = 6.0f;
        float r8367 = pow(r8365, r8366);
        float r8368 = r8364 * r8367;
        float r8369 = 77617.0f;
        float r8370 = r8369 * r8369;
        float r8371 = 11.0f;
        float r8372 = r8371 * r8370;
        float r8373 = r8365 * r8365;
        float r8374 = r8372 * r8373;
        float r8375 = -r8367;
        float r8376 = r8374 + r8375;
        float r8377 = -121.0f;
        float r8378 = 4.0f;
        float r8379 = pow(r8365, r8378);
        float r8380 = r8377 * r8379;
        float r8381 = r8376 + r8380;
        float r8382 = -2.0f;
        float r8383 = r8381 + r8382;
        float r8384 = r8370 * r8383;
        float r8385 = r8368 + r8384;
        float r8386 = 5.5f;
        float r8387 = 8.0f;
        float r8388 = pow(r8365, r8387);
        float r8389 = r8386 * r8388;
        float r8390 = r8385 + r8389;
        float r8391 = 2.0f;
        float r8392 = r8391 * r8365;
        float r8393 = r8369 / r8392;
        float r8394 = r8390 + r8393;
        return r8394;
}

double f_id() {
        double r8395 = 333.75;
        double r8396 = 33096.0;
        double r8397 = 6.0;
        double r8398 = pow(r8396, r8397);
        double r8399 = r8395 * r8398;
        double r8400 = 77617.0;
        double r8401 = r8400 * r8400;
        double r8402 = 11.0;
        double r8403 = r8402 * r8401;
        double r8404 = r8396 * r8396;
        double r8405 = r8403 * r8404;
        double r8406 = -r8398;
        double r8407 = r8405 + r8406;
        double r8408 = -121.0;
        double r8409 = 4.0;
        double r8410 = pow(r8396, r8409);
        double r8411 = r8408 * r8410;
        double r8412 = r8407 + r8411;
        double r8413 = -2.0;
        double r8414 = r8412 + r8413;
        double r8415 = r8401 * r8414;
        double r8416 = r8399 + r8415;
        double r8417 = 5.5;
        double r8418 = 8.0;
        double r8419 = pow(r8396, r8418);
        double r8420 = r8417 * r8419;
        double r8421 = r8416 + r8420;
        double r8422 = 2.0;
        double r8423 = r8422 * r8396;
        double r8424 = r8400 / r8423;
        double r8425 = r8421 + r8424;
        return r8425;
}


double f_of() {
        float r8426 = 77617.0f;
        float r8427 = r8426 * r8426;
        float r8428 = 33096.0f;
        float r8429 = r8428 * r8428;
        float r8430 = r8427 * r8429;
        float r8431 = 11.0f;
        float r8432 = r8430 * r8431;
        float r8433 = 6.0f;
        float r8434 = pow(r8428, r8433);
        float r8435 = -121.0f;
        float r8436 = 4.0f;
        float r8437 = pow(r8428, r8436);
        float r8438 = -2.0f;
        float r8439 = fma(r8435, r8437, r8438);
        float r8440 = r8434 - r8439;
        float r8441 = r8432 - r8440;
        float r8442 = 333.75f;
        float r8443 = 8.0f;
        float r8444 = pow(r8428, r8443);
        float r8445 = 5.5f;
        float r8446 = 2.0f;
        float r8447 = r8426 / r8446;
        float r8448 = r8447 / r8428;
        float r8449 = fma(r8444, r8445, r8448);
        float r8450 = fma(r8434, r8442, r8449);
        float r8451 = fma(r8441, r8427, r8450);
        return r8451;
}

double f_od() {
        double r8452 = 77617.0;
        double r8453 = r8452 * r8452;
        double r8454 = 33096.0;
        double r8455 = r8454 * r8454;
        double r8456 = r8453 * r8455;
        double r8457 = 11.0;
        double r8458 = r8456 * r8457;
        double r8459 = 6.0;
        double r8460 = pow(r8454, r8459);
        double r8461 = -121.0;
        double r8462 = 4.0;
        double r8463 = pow(r8454, r8462);
        double r8464 = -2.0;
        double r8465 = fma(r8461, r8463, r8464);
        double r8466 = r8460 - r8465;
        double r8467 = r8458 - r8466;
        double r8468 = 333.75;
        double r8469 = 8.0;
        double r8470 = pow(r8454, r8469);
        double r8471 = 5.5;
        double r8472 = 2.0;
        double r8473 = r8452 / r8472;
        double r8474 = r8473 / r8454;
        double r8475 = fma(r8470, r8471, r8474);
        double r8476 = fma(r8460, r8468, r8475);
        double r8477 = fma(r8467, r8453, r8476);
        return r8477;
}

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 r8478, r8479, r8480, r8481, r8482, r8483, r8484, r8485, r8486, r8487, r8488, r8489, r8490, r8491, r8492, r8493, r8494, r8495, r8496, r8497, r8498, r8499, r8500, r8501, r8502, r8503, r8504, r8505, r8506, r8507, r8508;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8478, "333.75", 10, MPFR_RNDN);
        mpfr_init_set_str(r8479, "33096", 10, MPFR_RNDN);
        mpfr_init_set_str(r8480, "6", 10, MPFR_RNDN);
        mpfr_init(r8481);
        mpfr_init(r8482);
        mpfr_init_set_str(r8483, "77617", 10, MPFR_RNDN);
        mpfr_init(r8484);
        mpfr_init_set_str(r8485, "11", 10, MPFR_RNDN);
        mpfr_init(r8486);
        mpfr_init(r8487);
        mpfr_init(r8488);
        mpfr_init(r8489);
        mpfr_init(r8490);
        mpfr_init_set_str(r8491, "-121", 10, MPFR_RNDN);
        mpfr_init_set_str(r8492, "4", 10, MPFR_RNDN);
        mpfr_init(r8493);
        mpfr_init(r8494);
        mpfr_init(r8495);
        mpfr_init_set_str(r8496, "-2", 10, MPFR_RNDN);
        mpfr_init(r8497);
        mpfr_init(r8498);
        mpfr_init(r8499);
        mpfr_init_set_str(r8500, "5.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8501, "8", 10, MPFR_RNDN);
        mpfr_init(r8502);
        mpfr_init(r8503);
        mpfr_init(r8504);
        mpfr_init_set_str(r8505, "2", 10, MPFR_RNDN);
        mpfr_init(r8506);
        mpfr_init(r8507);
        mpfr_init(r8508);
}

double f_im() {
        ;
        ;
        ;
        mpfr_pow(r8481, r8479, r8480, MPFR_RNDN);
        mpfr_mul(r8482, r8478, r8481, MPFR_RNDN);
        ;
        mpfr_mul(r8484, r8483, r8483, MPFR_RNDN);
        ;
        mpfr_mul(r8486, r8485, r8484, MPFR_RNDN);
        mpfr_mul(r8487, r8479, r8479, MPFR_RNDN);
        mpfr_mul(r8488, r8486, r8487, MPFR_RNDN);
        mpfr_neg(r8489, r8481, MPFR_RNDN);
        mpfr_add(r8490, r8488, r8489, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8493, r8479, r8492, MPFR_RNDN);
        mpfr_mul(r8494, r8491, r8493, MPFR_RNDN);
        mpfr_add(r8495, r8490, r8494, MPFR_RNDN);
        ;
        mpfr_add(r8497, r8495, r8496, MPFR_RNDN);
        mpfr_mul(r8498, r8484, r8497, MPFR_RNDN);
        mpfr_add(r8499, r8482, r8498, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8502, r8479, r8501, MPFR_RNDN);
        mpfr_mul(r8503, r8500, r8502, MPFR_RNDN);
        mpfr_add(r8504, r8499, r8503, MPFR_RNDN);
        ;
        mpfr_mul(r8506, r8505, r8479, MPFR_RNDN);
        mpfr_div(r8507, r8483, r8506, MPFR_RNDN);
        mpfr_add(r8508, r8504, r8507, MPFR_RNDN);
        return mpfr_get_d(r8508, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8509, "77617", 10, MPFR_RNDN);
        mpfr_init(r8510);
        mpfr_init_set_str(r8511, "33096", 10, MPFR_RNDN);
        mpfr_init(r8512);
        mpfr_init(r8513);
        mpfr_init_set_str(r8514, "11", 10, MPFR_RNDN);
        mpfr_init(r8515);
        mpfr_init_set_str(r8516, "6", 10, MPFR_RNDN);
        mpfr_init(r8517);
        mpfr_init_set_str(r8518, "-121", 10, MPFR_RNDN);
        mpfr_init_set_str(r8519, "4", 10, MPFR_RNDN);
        mpfr_init(r8520);
        mpfr_init_set_str(r8521, "-2", 10, MPFR_RNDN);
        mpfr_init(r8522);
        mpfr_init(r8523);
        mpfr_init(r8524);
        mpfr_init_set_str(r8525, "333.75", 10, MPFR_RNDN);
        mpfr_init_set_str(r8526, "8", 10, MPFR_RNDN);
        mpfr_init(r8527);
        mpfr_init_set_str(r8528, "5.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8529, "2", 10, MPFR_RNDN);
        mpfr_init(r8530);
        mpfr_init(r8531);
        mpfr_init(r8532);
        mpfr_init(r8533);
        mpfr_init(r8534);
}

double f_fm() {
        ;
        mpfr_mul(r8510, r8509, r8509, MPFR_RNDN);
        ;
        mpfr_mul(r8512, r8511, r8511, MPFR_RNDN);
        mpfr_mul(r8513, r8510, r8512, MPFR_RNDN);
        ;
        mpfr_mul(r8515, r8513, r8514, MPFR_RNDN);
        ;
        mpfr_pow(r8517, r8511, r8516, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8520, r8511, r8519, MPFR_RNDN);
        ;
        mpfr_fma(r8522, r8518, r8520, r8521, MPFR_RNDN);
        mpfr_sub(r8523, r8517, r8522, MPFR_RNDN);
        mpfr_sub(r8524, r8515, r8523, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8527, r8511, r8526, MPFR_RNDN);
        ;
        ;
        mpfr_div(r8530, r8509, r8529, MPFR_RNDN);
        mpfr_div(r8531, r8530, r8511, MPFR_RNDN);
        mpfr_fma(r8532, r8527, r8528, r8531, MPFR_RNDN);
        mpfr_fma(r8533, r8517, r8525, r8532, MPFR_RNDN);
        mpfr_fma(r8534, r8524, r8510, r8533, MPFR_RNDN);
        return mpfr_get_d(r8534, MPFR_RNDN);
}

static mpfr_t r8535, r8536, r8537, r8538, r8539, r8540, r8541, r8542, r8543, r8544, r8545, r8546, r8547, r8548, r8549, r8550, r8551, r8552, r8553, r8554, r8555, r8556, r8557, r8558, r8559, r8560;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8535, "77617", 10, MPFR_RNDN);
        mpfr_init(r8536);
        mpfr_init_set_str(r8537, "33096", 10, MPFR_RNDN);
        mpfr_init(r8538);
        mpfr_init(r8539);
        mpfr_init_set_str(r8540, "11", 10, MPFR_RNDN);
        mpfr_init(r8541);
        mpfr_init_set_str(r8542, "6", 10, MPFR_RNDN);
        mpfr_init(r8543);
        mpfr_init_set_str(r8544, "-121", 10, MPFR_RNDN);
        mpfr_init_set_str(r8545, "4", 10, MPFR_RNDN);
        mpfr_init(r8546);
        mpfr_init_set_str(r8547, "-2", 10, MPFR_RNDN);
        mpfr_init(r8548);
        mpfr_init(r8549);
        mpfr_init(r8550);
        mpfr_init_set_str(r8551, "333.75", 10, MPFR_RNDN);
        mpfr_init_set_str(r8552, "8", 10, MPFR_RNDN);
        mpfr_init(r8553);
        mpfr_init_set_str(r8554, "5.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8555, "2", 10, MPFR_RNDN);
        mpfr_init(r8556);
        mpfr_init(r8557);
        mpfr_init(r8558);
        mpfr_init(r8559);
        mpfr_init(r8560);
}

double f_dm() {
        ;
        mpfr_mul(r8536, r8535, r8535, MPFR_RNDN);
        ;
        mpfr_mul(r8538, r8537, r8537, MPFR_RNDN);
        mpfr_mul(r8539, r8536, r8538, MPFR_RNDN);
        ;
        mpfr_mul(r8541, r8539, r8540, MPFR_RNDN);
        ;
        mpfr_pow(r8543, r8537, r8542, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8546, r8537, r8545, MPFR_RNDN);
        ;
        mpfr_fma(r8548, r8544, r8546, r8547, MPFR_RNDN);
        mpfr_sub(r8549, r8543, r8548, MPFR_RNDN);
        mpfr_sub(r8550, r8541, r8549, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8553, r8537, r8552, MPFR_RNDN);
        ;
        ;
        mpfr_div(r8556, r8535, r8555, MPFR_RNDN);
        mpfr_div(r8557, r8556, r8537, MPFR_RNDN);
        mpfr_fma(r8558, r8553, r8554, r8557, MPFR_RNDN);
        mpfr_fma(r8559, r8543, r8551, r8558, MPFR_RNDN);
        mpfr_fma(r8560, r8550, r8536, r8559, MPFR_RNDN);
        return mpfr_get_d(r8560, MPFR_RNDN);
}

