#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 r9966 = 2.0f;
        float r9967 = sqrt(r9966);
        float r9968 = 4.0f;
        float r9969 = r9967 / r9968;
        float r9970 = 1.0f;
        float r9971 = 3.0f;
        float r9972 = v;
        float r9973 = r9972 * r9972;
        float r9974 = r9971 * r9973;
        float r9975 = r9970 - r9974;
        float r9976 = sqrt(r9975);
        float r9977 = r9969 * r9976;
        float r9978 = r9970 - r9973;
        float r9979 = r9977 * r9978;
        return r9979;
}

double f_id(double v) {
        double r9980 = 2.0;
        double r9981 = sqrt(r9980);
        double r9982 = 4.0;
        double r9983 = r9981 / r9982;
        double r9984 = 1.0;
        double r9985 = 3.0;
        double r9986 = v;
        double r9987 = r9986 * r9986;
        double r9988 = r9985 * r9987;
        double r9989 = r9984 - r9988;
        double r9990 = sqrt(r9989);
        double r9991 = r9983 * r9990;
        double r9992 = r9984 - r9987;
        double r9993 = r9991 * r9992;
        return r9993;
}


double f_of(float v) {
        float r9994 = 1.0f;
        float r9995 = v;
        float r9996 = r9995 * r9995;
        float r9997 = r9994 - r9996;
        float r9998 = 2.0f;
        float r9999 = sqrt(r9998);
        float r10000 = 4.0f;
        float r10001 = r9999 / r10000;
        float r10002 = 3.0f;
        float r10003 = r10002 * r9996;
        float r10004 = r9994 - r10003;
        float r10005 = cbrt(r10004);
        float r10006 = fabs(r10005);
        float r10007 = sqrt(r10005);
        float r10008 = r10006 * r10007;
        float r10009 = r10001 * r10008;
        float r10010 = r9997 * r10009;
        return r10010;
}

double f_od(double v) {
        double r10011 = 1.0;
        double r10012 = v;
        double r10013 = r10012 * r10012;
        double r10014 = r10011 - r10013;
        double r10015 = 2.0;
        double r10016 = sqrt(r10015);
        double r10017 = 4.0;
        double r10018 = r10016 / r10017;
        double r10019 = 3.0;
        double r10020 = r10019 * r10013;
        double r10021 = r10011 - r10020;
        double r10022 = cbrt(r10021);
        double r10023 = fabs(r10022);
        double r10024 = sqrt(r10022);
        double r10025 = r10023 * r10024;
        double r10026 = r10018 * r10025;
        double r10027 = r10014 * r10026;
        return r10027;
}

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 r10028, r10029, r10030, r10031, r10032, r10033, r10034, r10035, r10036, r10037, r10038, r10039, r10040, r10041;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10028, "2", 10, MPFR_RNDN);
        mpfr_init(r10029);
        mpfr_init_set_str(r10030, "4", 10, MPFR_RNDN);
        mpfr_init(r10031);
        mpfr_init_set_str(r10032, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10033, "3", 10, MPFR_RNDN);
        mpfr_init(r10034);
        mpfr_init(r10035);
        mpfr_init(r10036);
        mpfr_init(r10037);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init(r10041);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r10029, r10028, MPFR_RNDN);
        ;
        mpfr_div(r10031, r10029, r10030, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10034, v, MPFR_RNDN);
        mpfr_mul(r10035, r10034, r10034, MPFR_RNDN);
        mpfr_mul(r10036, r10033, r10035, MPFR_RNDN);
        mpfr_sub(r10037, r10032, r10036, MPFR_RNDN);
        mpfr_sqrt(r10038, r10037, MPFR_RNDN);
        mpfr_mul(r10039, r10031, r10038, MPFR_RNDN);
        mpfr_sub(r10040, r10032, r10035, MPFR_RNDN);
        mpfr_mul(r10041, r10039, r10040, MPFR_RNDN);
        return mpfr_get_d(r10041, MPFR_RNDN);
}

static mpfr_t r10042, r10043, r10044, r10045, r10046, r10047, r10048, r10049, r10050, r10051, r10052, r10053, r10054, r10055, r10056, r10057, r10058;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10042, "1", 10, MPFR_RNDN);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init(r10045);
        mpfr_init_set_str(r10046, "2", 10, MPFR_RNDN);
        mpfr_init(r10047);
        mpfr_init_set_str(r10048, "4", 10, MPFR_RNDN);
        mpfr_init(r10049);
        mpfr_init_set_str(r10050, "3", 10, MPFR_RNDN);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init(r10054);
        mpfr_init(r10055);
        mpfr_init(r10056);
        mpfr_init(r10057);
        mpfr_init(r10058);
}

double f_fm(double v) {
        ;
        mpfr_set_d(r10043, v, MPFR_RNDN);
        mpfr_mul(r10044, r10043, r10043, MPFR_RNDN);
        mpfr_sub(r10045, r10042, r10044, MPFR_RNDN);
        ;
        mpfr_sqrt(r10047, r10046, MPFR_RNDN);
        ;
        mpfr_div(r10049, r10047, r10048, MPFR_RNDN);
        ;
        mpfr_mul(r10051, r10050, r10044, MPFR_RNDN);
        mpfr_sub(r10052, r10042, r10051, MPFR_RNDN);
        mpfr_cbrt(r10053, r10052, MPFR_RNDN);
        mpfr_abs(r10054, r10053, MPFR_RNDN);
        mpfr_sqrt(r10055, r10053, MPFR_RNDN);
        mpfr_mul(r10056, r10054, r10055, MPFR_RNDN);
        mpfr_mul(r10057, r10049, r10056, MPFR_RNDN);
        mpfr_mul(r10058, r10045, r10057, MPFR_RNDN);
        return mpfr_get_d(r10058, MPFR_RNDN);
}

static mpfr_t r10059, r10060, r10061, r10062, r10063, r10064, r10065, r10066, r10067, r10068, r10069, r10070, r10071, r10072, r10073, r10074, r10075;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10059, "1", 10, MPFR_RNDN);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init(r10062);
        mpfr_init_set_str(r10063, "2", 10, MPFR_RNDN);
        mpfr_init(r10064);
        mpfr_init_set_str(r10065, "4", 10, MPFR_RNDN);
        mpfr_init(r10066);
        mpfr_init_set_str(r10067, "3", 10, MPFR_RNDN);
        mpfr_init(r10068);
        mpfr_init(r10069);
        mpfr_init(r10070);
        mpfr_init(r10071);
        mpfr_init(r10072);
        mpfr_init(r10073);
        mpfr_init(r10074);
        mpfr_init(r10075);
}

double f_dm(double v) {
        ;
        mpfr_set_d(r10060, v, MPFR_RNDN);
        mpfr_mul(r10061, r10060, r10060, MPFR_RNDN);
        mpfr_sub(r10062, r10059, r10061, MPFR_RNDN);
        ;
        mpfr_sqrt(r10064, r10063, MPFR_RNDN);
        ;
        mpfr_div(r10066, r10064, r10065, MPFR_RNDN);
        ;
        mpfr_mul(r10068, r10067, r10061, MPFR_RNDN);
        mpfr_sub(r10069, r10059, r10068, MPFR_RNDN);
        mpfr_cbrt(r10070, r10069, MPFR_RNDN);
        mpfr_abs(r10071, r10070, MPFR_RNDN);
        mpfr_sqrt(r10072, r10070, MPFR_RNDN);
        mpfr_mul(r10073, r10071, r10072, MPFR_RNDN);
        mpfr_mul(r10074, r10066, r10073, MPFR_RNDN);
        mpfr_mul(r10075, r10062, r10074, MPFR_RNDN);
        return mpfr_get_d(r10075, MPFR_RNDN);
}

