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

char *name = "Falkner and Boettcher, Appendix B, 2";

double f_if(float v) {
        float r11414 = 2;
        float r11415 = sqrt(r11414);
        float r11416 = 4;
        float r11417 = r11415 / r11416;
        float r11418 = 1;
        float r11419 = 3;
        float r11420 = v;
        float r11421 = r11420 * r11420;
        float r11422 = r11419 * r11421;
        float r11423 = r11418 - r11422;
        float r11424 = sqrt(r11423);
        float r11425 = r11417 * r11424;
        float r11426 = r11418 - r11421;
        float r11427 = r11425 * r11426;
        return r11427;
}

double f_id(double v) {
        double r11428 = 2;
        double r11429 = sqrt(r11428);
        double r11430 = 4;
        double r11431 = r11429 / r11430;
        double r11432 = 1;
        double r11433 = 3;
        double r11434 = v;
        double r11435 = r11434 * r11434;
        double r11436 = r11433 * r11435;
        double r11437 = r11432 - r11436;
        double r11438 = sqrt(r11437);
        double r11439 = r11431 * r11438;
        double r11440 = r11432 - r11435;
        double r11441 = r11439 * r11440;
        return r11441;
}


double f_of(float v) {
        float r11442 = 2;
        float r11443 = sqrt(r11442);
        float r11444 = 4;
        float r11445 = r11443 / r11444;
        float r11446 = 1;
        float r11447 = 3;
        float r11448 = v;
        float r11449 = r11448 * r11448;
        float r11450 = r11447 * r11449;
        float r11451 = exp(r11450);
        float r11452 = log(r11451);
        float r11453 = r11446 - r11452;
        float r11454 = sqrt(r11453);
        float r11455 = r11445 * r11454;
        float r11456 = r11446 - r11449;
        float r11457 = r11455 * r11456;
        return r11457;
}

double f_od(double v) {
        double r11458 = 2;
        double r11459 = sqrt(r11458);
        double r11460 = 4;
        double r11461 = r11459 / r11460;
        double r11462 = 1;
        double r11463 = 3;
        double r11464 = v;
        double r11465 = r11464 * r11464;
        double r11466 = r11463 * r11465;
        double r11467 = exp(r11466);
        double r11468 = log(r11467);
        double r11469 = r11462 - r11468;
        double r11470 = sqrt(r11469);
        double r11471 = r11461 * r11470;
        double r11472 = r11462 - r11465;
        double r11473 = r11471 * r11472;
        return r11473;
}

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 r11474, r11475, r11476, r11477, r11478, r11479, r11480, r11481, r11482, r11483, r11484, r11485, r11486, r11487;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11474, "2", 10, MPFR_RNDN);
        mpfr_init(r11475);
        mpfr_init_set_str(r11476, "4", 10, MPFR_RNDN);
        mpfr_init(r11477);
        mpfr_init_set_str(r11478, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11479, "3", 10, MPFR_RNDN);
        mpfr_init(r11480);
        mpfr_init(r11481);
        mpfr_init(r11482);
        mpfr_init(r11483);
        mpfr_init(r11484);
        mpfr_init(r11485);
        mpfr_init(r11486);
        mpfr_init(r11487);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r11475, r11474, MPFR_RNDN);
        ;
        mpfr_div(r11477, r11475, r11476, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r11480, v, MPFR_RNDN);
        mpfr_mul(r11481, r11480, r11480, MPFR_RNDN);
        mpfr_mul(r11482, r11479, r11481, MPFR_RNDN);
        mpfr_sub(r11483, r11478, r11482, MPFR_RNDN);
        mpfr_sqrt(r11484, r11483, MPFR_RNDN);
        mpfr_mul(r11485, r11477, r11484, MPFR_RNDN);
        mpfr_sub(r11486, r11478, r11481, MPFR_RNDN);
        mpfr_mul(r11487, r11485, r11486, MPFR_RNDN);
        return mpfr_get_d(r11487, MPFR_RNDN);
}

static mpfr_t r11488, r11489, r11490, r11491, r11492, r11493, r11494, r11495, r11496, r11497, r11498, r11499, r11500, r11501, r11502, r11503;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11488, "2", 10, MPFR_RNDN);
        mpfr_init(r11489);
        mpfr_init_set_str(r11490, "4", 10, MPFR_RNDN);
        mpfr_init(r11491);
        mpfr_init_set_str(r11492, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11493, "3", 10, MPFR_RNDN);
        mpfr_init(r11494);
        mpfr_init(r11495);
        mpfr_init(r11496);
        mpfr_init(r11497);
        mpfr_init(r11498);
        mpfr_init(r11499);
        mpfr_init(r11500);
        mpfr_init(r11501);
        mpfr_init(r11502);
        mpfr_init(r11503);
}

double f_fm(double v) {
        ;
        mpfr_sqrt(r11489, r11488, MPFR_RNDN);
        ;
        mpfr_div(r11491, r11489, r11490, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r11494, v, MPFR_RNDN);
        mpfr_mul(r11495, r11494, r11494, MPFR_RNDN);
        mpfr_mul(r11496, r11493, r11495, MPFR_RNDN);
        mpfr_exp(r11497, r11496, MPFR_RNDN);
        mpfr_log(r11498, r11497, MPFR_RNDN);
        mpfr_sub(r11499, r11492, r11498, MPFR_RNDN);
        mpfr_sqrt(r11500, r11499, MPFR_RNDN);
        mpfr_mul(r11501, r11491, r11500, MPFR_RNDN);
        mpfr_sub(r11502, r11492, r11495, MPFR_RNDN);
        mpfr_mul(r11503, r11501, r11502, MPFR_RNDN);
        return mpfr_get_d(r11503, MPFR_RNDN);
}

static mpfr_t r11504, r11505, r11506, r11507, r11508, r11509, r11510, r11511, r11512, r11513, r11514, r11515, r11516, r11517, r11518, r11519;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11504, "2", 10, MPFR_RNDN);
        mpfr_init(r11505);
        mpfr_init_set_str(r11506, "4", 10, MPFR_RNDN);
        mpfr_init(r11507);
        mpfr_init_set_str(r11508, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11509, "3", 10, MPFR_RNDN);
        mpfr_init(r11510);
        mpfr_init(r11511);
        mpfr_init(r11512);
        mpfr_init(r11513);
        mpfr_init(r11514);
        mpfr_init(r11515);
        mpfr_init(r11516);
        mpfr_init(r11517);
        mpfr_init(r11518);
        mpfr_init(r11519);
}

double f_dm(double v) {
        ;
        mpfr_sqrt(r11505, r11504, MPFR_RNDN);
        ;
        mpfr_div(r11507, r11505, r11506, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r11510, v, MPFR_RNDN);
        mpfr_mul(r11511, r11510, r11510, MPFR_RNDN);
        mpfr_mul(r11512, r11509, r11511, MPFR_RNDN);
        mpfr_exp(r11513, r11512, MPFR_RNDN);
        mpfr_log(r11514, r11513, MPFR_RNDN);
        mpfr_sub(r11515, r11508, r11514, MPFR_RNDN);
        mpfr_sqrt(r11516, r11515, MPFR_RNDN);
        mpfr_mul(r11517, r11507, r11516, MPFR_RNDN);
        mpfr_sub(r11518, r11508, r11511, MPFR_RNDN);
        mpfr_mul(r11519, r11517, r11518, MPFR_RNDN);
        return mpfr_get_d(r11519, MPFR_RNDN);
}

