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

char *name = "VandenBroeck and Keller, Equation (20)";

double f_if(float f) {
        float r8142 = 1;
        float r8143 = atan2(1.0, 0.0);
        float r8144 = 4;
        float r8145 = r8143 / r8144;
        float r8146 = r8142 / r8145;
        float r8147 = f;
        float r8148 = r8145 * r8147;
        float r8149 = exp(r8148);
        float r8150 = -r8148;
        float r8151 = exp(r8150);
        float r8152 = r8149 + r8151;
        float r8153 = r8149 - r8151;
        float r8154 = r8152 / r8153;
        float r8155 = log(r8154);
        float r8156 = r8146 * r8155;
        float r8157 = -r8156;
        return r8157;
}

double f_id(double f) {
        double r8158 = 1;
        double r8159 = atan2(1.0, 0.0);
        double r8160 = 4;
        double r8161 = r8159 / r8160;
        double r8162 = r8158 / r8161;
        double r8163 = f;
        double r8164 = r8161 * r8163;
        double r8165 = exp(r8164);
        double r8166 = -r8164;
        double r8167 = exp(r8166);
        double r8168 = r8165 + r8167;
        double r8169 = r8165 - r8167;
        double r8170 = r8168 / r8169;
        double r8171 = log(r8170);
        double r8172 = r8162 * r8171;
        double r8173 = -r8172;
        return r8173;
}


double f_of(float f) {
        float r8174 = 4;
        float r8175 = atan2(1.0, 0.0);
        float r8176 = r8174 / r8175;
        float r8177 = log(r8176);
        float r8178 = r8177 / r8175;
        float r8179 = r8174 * r8178;
        float r8180 = 1/12;
        float r8181 = f;
        float r8182 = 2;
        float r8183 = pow(r8181, r8182);
        float r8184 = r8183 * r8175;
        float r8185 = r8180 * r8184;
        float r8186 = r8179 + r8185;
        float r8187 = log(r8181);
        float r8188 = r8187 / r8175;
        float r8189 = r8174 * r8188;
        float r8190 = 7/5760;
        float r8191 = pow(r8181, r8174);
        float r8192 = 3;
        float r8193 = pow(r8175, r8192);
        float r8194 = log1p(r8193);
        float r8195 = expm1(r8194);
        float r8196 = r8191 * r8195;
        float r8197 = r8190 * r8196;
        float r8198 = r8189 + r8197;
        float r8199 = r8186 - r8198;
        float r8200 = -r8199;
        return r8200;
}

double f_od(double f) {
        double r8201 = 4;
        double r8202 = atan2(1.0, 0.0);
        double r8203 = r8201 / r8202;
        double r8204 = log(r8203);
        double r8205 = r8204 / r8202;
        double r8206 = r8201 * r8205;
        double r8207 = 1/12;
        double r8208 = f;
        double r8209 = 2;
        double r8210 = pow(r8208, r8209);
        double r8211 = r8210 * r8202;
        double r8212 = r8207 * r8211;
        double r8213 = r8206 + r8212;
        double r8214 = log(r8208);
        double r8215 = r8214 / r8202;
        double r8216 = r8201 * r8215;
        double r8217 = 7/5760;
        double r8218 = pow(r8208, r8201);
        double r8219 = 3;
        double r8220 = pow(r8202, r8219);
        double r8221 = log1p(r8220);
        double r8222 = expm1(r8221);
        double r8223 = r8218 * r8222;
        double r8224 = r8217 * r8223;
        double r8225 = r8216 + r8224;
        double r8226 = r8213 - r8225;
        double r8227 = -r8226;
        return r8227;
}

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 r8228, r8229, r8230, r8231, r8232, r8233, r8234, r8235, r8236, r8237, r8238, r8239, r8240, r8241, r8242, r8243;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8228, "1", 10, MPFR_RNDN);
        mpfr_init(r8229);
        mpfr_init_set_str(r8230, "4", 10, MPFR_RNDN);
        mpfr_init(r8231);
        mpfr_init(r8232);
        mpfr_init(r8233);
        mpfr_init(r8234);
        mpfr_init(r8235);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init(r8238);
        mpfr_init(r8239);
        mpfr_init(r8240);
        mpfr_init(r8241);
        mpfr_init(r8242);
        mpfr_init(r8243);
}

double f_im(double f) {
        ;
        mpfr_const_pi(r8229, MPFR_RNDN);
        ;
        mpfr_div(r8231, r8229, r8230, MPFR_RNDN);
        mpfr_div(r8232, r8228, r8231, MPFR_RNDN);
        mpfr_set_d(r8233, f, MPFR_RNDN);
        mpfr_mul(r8234, r8231, r8233, MPFR_RNDN);
        mpfr_exp(r8235, r8234, MPFR_RNDN);
        mpfr_neg(r8236, r8234, MPFR_RNDN);
        mpfr_exp(r8237, r8236, MPFR_RNDN);
        mpfr_add(r8238, r8235, r8237, MPFR_RNDN);
        mpfr_sub(r8239, r8235, r8237, MPFR_RNDN);
        mpfr_div(r8240, r8238, r8239, MPFR_RNDN);
        mpfr_log(r8241, r8240, MPFR_RNDN);
        mpfr_mul(r8242, r8232, r8241, MPFR_RNDN);
        mpfr_neg(r8243, r8242, MPFR_RNDN);
        return mpfr_get_d(r8243, MPFR_RNDN);
}

static mpfr_t r8244, r8245, r8246, r8247, r8248, r8249, r8250, r8251, r8252, r8253, r8254, r8255, r8256, r8257, r8258, r8259, r8260, r8261, r8262, r8263, r8264, r8265, r8266, r8267, r8268, r8269, r8270;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8244, "4", 10, MPFR_RNDN);
        mpfr_init(r8245);
        mpfr_init(r8246);
        mpfr_init(r8247);
        mpfr_init(r8248);
        mpfr_init(r8249);
        mpfr_init_set_str(r8250, "1/12", 10, MPFR_RNDN);
        mpfr_init(r8251);
        mpfr_init_set_str(r8252, "2", 10, MPFR_RNDN);
        mpfr_init(r8253);
        mpfr_init(r8254);
        mpfr_init(r8255);
        mpfr_init(r8256);
        mpfr_init(r8257);
        mpfr_init(r8258);
        mpfr_init(r8259);
        mpfr_init_set_str(r8260, "7/5760", 10, MPFR_RNDN);
        mpfr_init(r8261);
        mpfr_init_set_str(r8262, "3", 10, MPFR_RNDN);
        mpfr_init(r8263);
        mpfr_init(r8264);
        mpfr_init(r8265);
        mpfr_init(r8266);
        mpfr_init(r8267);
        mpfr_init(r8268);
        mpfr_init(r8269);
        mpfr_init(r8270);
}

double f_fm(double f) {
        ;
        mpfr_const_pi(r8245, MPFR_RNDN);
        mpfr_div(r8246, r8244, r8245, MPFR_RNDN);
        mpfr_log(r8247, r8246, MPFR_RNDN);
        mpfr_div(r8248, r8247, r8245, MPFR_RNDN);
        mpfr_mul(r8249, r8244, r8248, MPFR_RNDN);
        ;
        mpfr_set_d(r8251, f, MPFR_RNDN);
        ;
        mpfr_pow(r8253, r8251, r8252, MPFR_RNDN);
        mpfr_mul(r8254, r8253, r8245, MPFR_RNDN);
        mpfr_mul(r8255, r8250, r8254, MPFR_RNDN);
        mpfr_add(r8256, r8249, r8255, MPFR_RNDN);
        mpfr_log(r8257, r8251, MPFR_RNDN);
        mpfr_div(r8258, r8257, r8245, MPFR_RNDN);
        mpfr_mul(r8259, r8244, r8258, MPFR_RNDN);
        ;
        mpfr_pow(r8261, r8251, r8244, MPFR_RNDN);
        ;
        mpfr_pow(r8263, r8245, r8262, MPFR_RNDN);
        mpfr_log1p(r8264, r8263, MPFR_RNDN);
        mpfr_expm1(r8265, r8264, MPFR_RNDN);
        mpfr_mul(r8266, r8261, r8265, MPFR_RNDN);
        mpfr_mul(r8267, r8260, r8266, MPFR_RNDN);
        mpfr_add(r8268, r8259, r8267, MPFR_RNDN);
        mpfr_sub(r8269, r8256, r8268, MPFR_RNDN);
        mpfr_neg(r8270, r8269, MPFR_RNDN);
        return mpfr_get_d(r8270, MPFR_RNDN);
}

static mpfr_t r8271, r8272, r8273, r8274, r8275, r8276, r8277, r8278, r8279, r8280, r8281, r8282, r8283, r8284, r8285, r8286, r8287, r8288, r8289, r8290, r8291, r8292, r8293, r8294, r8295, r8296, r8297;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8271, "4", 10, MPFR_RNDN);
        mpfr_init(r8272);
        mpfr_init(r8273);
        mpfr_init(r8274);
        mpfr_init(r8275);
        mpfr_init(r8276);
        mpfr_init_set_str(r8277, "1/12", 10, MPFR_RNDN);
        mpfr_init(r8278);
        mpfr_init_set_str(r8279, "2", 10, MPFR_RNDN);
        mpfr_init(r8280);
        mpfr_init(r8281);
        mpfr_init(r8282);
        mpfr_init(r8283);
        mpfr_init(r8284);
        mpfr_init(r8285);
        mpfr_init(r8286);
        mpfr_init_set_str(r8287, "7/5760", 10, MPFR_RNDN);
        mpfr_init(r8288);
        mpfr_init_set_str(r8289, "3", 10, MPFR_RNDN);
        mpfr_init(r8290);
        mpfr_init(r8291);
        mpfr_init(r8292);
        mpfr_init(r8293);
        mpfr_init(r8294);
        mpfr_init(r8295);
        mpfr_init(r8296);
        mpfr_init(r8297);
}

double f_dm(double f) {
        ;
        mpfr_const_pi(r8272, MPFR_RNDN);
        mpfr_div(r8273, r8271, r8272, MPFR_RNDN);
        mpfr_log(r8274, r8273, MPFR_RNDN);
        mpfr_div(r8275, r8274, r8272, MPFR_RNDN);
        mpfr_mul(r8276, r8271, r8275, MPFR_RNDN);
        ;
        mpfr_set_d(r8278, f, MPFR_RNDN);
        ;
        mpfr_pow(r8280, r8278, r8279, MPFR_RNDN);
        mpfr_mul(r8281, r8280, r8272, MPFR_RNDN);
        mpfr_mul(r8282, r8277, r8281, MPFR_RNDN);
        mpfr_add(r8283, r8276, r8282, MPFR_RNDN);
        mpfr_log(r8284, r8278, MPFR_RNDN);
        mpfr_div(r8285, r8284, r8272, MPFR_RNDN);
        mpfr_mul(r8286, r8271, r8285, MPFR_RNDN);
        ;
        mpfr_pow(r8288, r8278, r8271, MPFR_RNDN);
        ;
        mpfr_pow(r8290, r8272, r8289, MPFR_RNDN);
        mpfr_log1p(r8291, r8290, MPFR_RNDN);
        mpfr_expm1(r8292, r8291, MPFR_RNDN);
        mpfr_mul(r8293, r8288, r8292, MPFR_RNDN);
        mpfr_mul(r8294, r8287, r8293, MPFR_RNDN);
        mpfr_add(r8295, r8286, r8294, MPFR_RNDN);
        mpfr_sub(r8296, r8283, r8295, MPFR_RNDN);
        mpfr_neg(r8297, r8296, MPFR_RNDN);
        return mpfr_get_d(r8297, MPFR_RNDN);
}

