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

char *name = "Bouland and Aaronson, Equation (26)";

double f_if(float a, float b) {
        float r11344 = a;
        float r11345 = r11344 * r11344;
        float r11346 = b;
        float r11347 = r11346 * r11346;
        float r11348 = r11345 + r11347;
        float r11349 = 2;
        float r11350 = pow(r11348, r11349);
        float r11351 = 4;
        float r11352 = r11351 * r11347;
        float r11353 = r11350 + r11352;
        float r11354 = 1;
        float r11355 = r11353 - r11354;
        return r11355;
}

double f_id(double a, double b) {
        double r11356 = a;
        double r11357 = r11356 * r11356;
        double r11358 = b;
        double r11359 = r11358 * r11358;
        double r11360 = r11357 + r11359;
        double r11361 = 2;
        double r11362 = pow(r11360, r11361);
        double r11363 = 4;
        double r11364 = r11363 * r11359;
        double r11365 = r11362 + r11364;
        double r11366 = 1;
        double r11367 = r11365 - r11366;
        return r11367;
}


double f_of(float a, float b) {
        float r11368 = a;
        float r11369 = b;
        float r11370 = r11369 * r11369;
        float r11371 = fma(r11368, r11368, r11370);
        float r11372 = 2;
        float r11373 = pow(r11371, r11372);
        float r11374 = 4;
        float r11375 = r11374 * r11370;
        float r11376 = r11373 + r11375;
        float r11377 = 1;
        float r11378 = r11376 - r11377;
        return r11378;
}

double f_od(double a, double b) {
        double r11379 = a;
        double r11380 = b;
        double r11381 = r11380 * r11380;
        double r11382 = fma(r11379, r11379, r11381);
        double r11383 = 2;
        double r11384 = pow(r11382, r11383);
        double r11385 = 4;
        double r11386 = r11385 * r11381;
        double r11387 = r11384 + r11386;
        double r11388 = 1;
        double r11389 = r11387 - r11388;
        return r11389;
}

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 r11390, r11391, r11392, r11393, r11394, r11395, r11396, r11397, r11398, r11399, r11400, r11401;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11390);
        mpfr_init(r11391);
        mpfr_init(r11392);
        mpfr_init(r11393);
        mpfr_init(r11394);
        mpfr_init_set_str(r11395, "2", 10, MPFR_RNDN);
        mpfr_init(r11396);
        mpfr_init_set_str(r11397, "4", 10, MPFR_RNDN);
        mpfr_init(r11398);
        mpfr_init(r11399);
        mpfr_init_set_str(r11400, "1", 10, MPFR_RNDN);
        mpfr_init(r11401);
}

double f_im(double a, double b) {
        mpfr_set_d(r11390, a, MPFR_RNDN);
        mpfr_mul(r11391, r11390, r11390, MPFR_RNDN);
        mpfr_set_d(r11392, b, MPFR_RNDN);
        mpfr_mul(r11393, r11392, r11392, MPFR_RNDN);
        mpfr_add(r11394, r11391, r11393, MPFR_RNDN);
        ;
        mpfr_pow(r11396, r11394, r11395, MPFR_RNDN);
        ;
        mpfr_mul(r11398, r11397, r11393, MPFR_RNDN);
        mpfr_add(r11399, r11396, r11398, MPFR_RNDN);
        ;
        mpfr_sub(r11401, r11399, r11400, MPFR_RNDN);
        return mpfr_get_d(r11401, MPFR_RNDN);
}

static mpfr_t r11402, r11403, r11404, r11405, r11406, r11407, r11408, r11409, r11410, r11411, r11412;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11402);
        mpfr_init(r11403);
        mpfr_init(r11404);
        mpfr_init(r11405);
        mpfr_init_set_str(r11406, "2", 10, MPFR_RNDN);
        mpfr_init(r11407);
        mpfr_init_set_str(r11408, "4", 10, MPFR_RNDN);
        mpfr_init(r11409);
        mpfr_init(r11410);
        mpfr_init_set_str(r11411, "1", 10, MPFR_RNDN);
        mpfr_init(r11412);
}

double f_fm(double a, double b) {
        mpfr_set_d(r11402, a, MPFR_RNDN);
        mpfr_set_d(r11403, b, MPFR_RNDN);
        mpfr_mul(r11404, r11403, r11403, MPFR_RNDN);
        mpfr_fma(r11405, r11402, r11402, r11404, MPFR_RNDN);
        ;
        mpfr_pow(r11407, r11405, r11406, MPFR_RNDN);
        ;
        mpfr_mul(r11409, r11408, r11404, MPFR_RNDN);
        mpfr_add(r11410, r11407, r11409, MPFR_RNDN);
        ;
        mpfr_sub(r11412, r11410, r11411, MPFR_RNDN);
        return mpfr_get_d(r11412, MPFR_RNDN);
}

static mpfr_t r11413, r11414, r11415, r11416, r11417, r11418, r11419, r11420, r11421, r11422, r11423;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11413);
        mpfr_init(r11414);
        mpfr_init(r11415);
        mpfr_init(r11416);
        mpfr_init_set_str(r11417, "2", 10, MPFR_RNDN);
        mpfr_init(r11418);
        mpfr_init_set_str(r11419, "4", 10, MPFR_RNDN);
        mpfr_init(r11420);
        mpfr_init(r11421);
        mpfr_init_set_str(r11422, "1", 10, MPFR_RNDN);
        mpfr_init(r11423);
}

double f_dm(double a, double b) {
        mpfr_set_d(r11413, a, MPFR_RNDN);
        mpfr_set_d(r11414, b, MPFR_RNDN);
        mpfr_mul(r11415, r11414, r11414, MPFR_RNDN);
        mpfr_fma(r11416, r11413, r11413, r11415, MPFR_RNDN);
        ;
        mpfr_pow(r11418, r11416, r11417, MPFR_RNDN);
        ;
        mpfr_mul(r11420, r11419, r11415, MPFR_RNDN);
        mpfr_add(r11421, r11418, r11420, MPFR_RNDN);
        ;
        mpfr_sub(r11423, r11421, r11422, MPFR_RNDN);
        return mpfr_get_d(r11423, MPFR_RNDN);
}

