#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 r19835 = 1;
        float r19836 = atan2(1.0, 0.0);
        float r19837 = 4;
        float r19838 = r19836 / r19837;
        float r19839 = r19835 / r19838;
        float r19840 = f;
        float r19841 = r19838 * r19840;
        float r19842 = exp(r19841);
        float r19843 = -r19841;
        float r19844 = exp(r19843);
        float r19845 = r19842 + r19844;
        float r19846 = r19842 - r19844;
        float r19847 = r19845 / r19846;
        float r19848 = log(r19847);
        float r19849 = r19839 * r19848;
        float r19850 = -r19849;
        return r19850;
}

double f_id(double f) {
        double r19851 = 1;
        double r19852 = atan2(1.0, 0.0);
        double r19853 = 4;
        double r19854 = r19852 / r19853;
        double r19855 = r19851 / r19854;
        double r19856 = f;
        double r19857 = r19854 * r19856;
        double r19858 = exp(r19857);
        double r19859 = -r19857;
        double r19860 = exp(r19859);
        double r19861 = r19858 + r19860;
        double r19862 = r19858 - r19860;
        double r19863 = r19861 / r19862;
        double r19864 = log(r19863);
        double r19865 = r19855 * r19864;
        double r19866 = -r19865;
        return r19866;
}


double f_of(float f) {
        float r19867 = f;
        float r19868 = 4;
        float r19869 = pow(r19867, r19868);
        float r19870 = atan2(1.0, 0.0);
        float r19871 = 7/5760;
        float r19872 = r19870 * r19871;
        float r19873 = r19869 * r19872;
        float r19874 = r19870 * r19870;
        float r19875 = r19873 * r19874;
        float r19876 = 1/12;
        float r19877 = r19870 * r19876;
        float r19878 = r19867 * r19867;
        float r19879 = r19877 * r19878;
        float r19880 = r19875 - r19879;
        float r19881 = log(r19867);
        float r19882 = r19881 / r19870;
        float r19883 = r19868 / r19870;
        float r19884 = log(r19883);
        float r19885 = r19884 / r19870;
        float r19886 = r19882 - r19885;
        float r19887 = r19868 * r19886;
        float r19888 = r19880 + r19887;
        return r19888;
}

double f_od(double f) {
        double r19889 = f;
        double r19890 = 4;
        double r19891 = pow(r19889, r19890);
        double r19892 = atan2(1.0, 0.0);
        double r19893 = 7/5760;
        double r19894 = r19892 * r19893;
        double r19895 = r19891 * r19894;
        double r19896 = r19892 * r19892;
        double r19897 = r19895 * r19896;
        double r19898 = 1/12;
        double r19899 = r19892 * r19898;
        double r19900 = r19889 * r19889;
        double r19901 = r19899 * r19900;
        double r19902 = r19897 - r19901;
        double r19903 = log(r19889);
        double r19904 = r19903 / r19892;
        double r19905 = r19890 / r19892;
        double r19906 = log(r19905);
        double r19907 = r19906 / r19892;
        double r19908 = r19904 - r19907;
        double r19909 = r19890 * r19908;
        double r19910 = r19902 + r19909;
        return r19910;
}

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 r19911, r19912, r19913, r19914, r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922, r19923, r19924, r19925, r19926;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r19911, "1", 10, MPFR_RNDN);
        mpfr_init(r19912);
        mpfr_init_set_str(r19913, "4", 10, MPFR_RNDN);
        mpfr_init(r19914);
        mpfr_init(r19915);
        mpfr_init(r19916);
        mpfr_init(r19917);
        mpfr_init(r19918);
        mpfr_init(r19919);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
        mpfr_init(r19923);
        mpfr_init(r19924);
        mpfr_init(r19925);
        mpfr_init(r19926);
}

double f_im(double f) {
        ;
        mpfr_const_pi(r19912, MPFR_RNDN);
        ;
        mpfr_div(r19914, r19912, r19913, MPFR_RNDN);
        mpfr_div(r19915, r19911, r19914, MPFR_RNDN);
        mpfr_set_d(r19916, f, MPFR_RNDN);
        mpfr_mul(r19917, r19914, r19916, MPFR_RNDN);
        mpfr_exp(r19918, r19917, MPFR_RNDN);
        mpfr_neg(r19919, r19917, MPFR_RNDN);
        mpfr_exp(r19920, r19919, MPFR_RNDN);
        mpfr_add(r19921, r19918, r19920, MPFR_RNDN);
        mpfr_sub(r19922, r19918, r19920, MPFR_RNDN);
        mpfr_div(r19923, r19921, r19922, MPFR_RNDN);
        mpfr_log(r19924, r19923, MPFR_RNDN);
        mpfr_mul(r19925, r19915, r19924, MPFR_RNDN);
        mpfr_neg(r19926, r19925, MPFR_RNDN);
        return mpfr_get_d(r19926, MPFR_RNDN);
}

static mpfr_t r19927, r19928, r19929, r19930, r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19927);
        mpfr_init_set_str(r19928, "4", 10, MPFR_RNDN);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init_set_str(r19931, "7/5760", 10, MPFR_RNDN);
        mpfr_init(r19932);
        mpfr_init(r19933);
        mpfr_init(r19934);
        mpfr_init(r19935);
        mpfr_init_set_str(r19936, "1/12", 10, MPFR_RNDN);
        mpfr_init(r19937);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init(r19941);
        mpfr_init(r19942);
        mpfr_init(r19943);
        mpfr_init(r19944);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
}

double f_fm(double f) {
        mpfr_set_d(r19927, f, MPFR_RNDN);
        ;
        mpfr_pow(r19929, r19927, r19928, MPFR_RNDN);
        mpfr_const_pi(r19930, MPFR_RNDN);
        ;
        mpfr_mul(r19932, r19930, r19931, MPFR_RNDN);
        mpfr_mul(r19933, r19929, r19932, MPFR_RNDN);
        mpfr_mul(r19934, r19930, r19930, MPFR_RNDN);
        mpfr_mul(r19935, r19933, r19934, MPFR_RNDN);
        ;
        mpfr_mul(r19937, r19930, r19936, MPFR_RNDN);
        mpfr_mul(r19938, r19927, r19927, MPFR_RNDN);
        mpfr_mul(r19939, r19937, r19938, MPFR_RNDN);
        mpfr_sub(r19940, r19935, r19939, MPFR_RNDN);
        mpfr_log(r19941, r19927, MPFR_RNDN);
        mpfr_div(r19942, r19941, r19930, MPFR_RNDN);
        mpfr_div(r19943, r19928, r19930, MPFR_RNDN);
        mpfr_log(r19944, r19943, MPFR_RNDN);
        mpfr_div(r19945, r19944, r19930, MPFR_RNDN);
        mpfr_sub(r19946, r19942, r19945, MPFR_RNDN);
        mpfr_mul(r19947, r19928, r19946, MPFR_RNDN);
        mpfr_add(r19948, r19940, r19947, MPFR_RNDN);
        return mpfr_get_d(r19948, MPFR_RNDN);
}

static mpfr_t r19949, r19950, r19951, r19952, r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19949);
        mpfr_init_set_str(r19950, "4", 10, MPFR_RNDN);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init_set_str(r19953, "7/5760", 10, MPFR_RNDN);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init(r19956);
        mpfr_init(r19957);
        mpfr_init_set_str(r19958, "1/12", 10, MPFR_RNDN);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
        mpfr_init(r19967);
        mpfr_init(r19968);
        mpfr_init(r19969);
        mpfr_init(r19970);
}

double f_dm(double f) {
        mpfr_set_d(r19949, f, MPFR_RNDN);
        ;
        mpfr_pow(r19951, r19949, r19950, MPFR_RNDN);
        mpfr_const_pi(r19952, MPFR_RNDN);
        ;
        mpfr_mul(r19954, r19952, r19953, MPFR_RNDN);
        mpfr_mul(r19955, r19951, r19954, MPFR_RNDN);
        mpfr_mul(r19956, r19952, r19952, MPFR_RNDN);
        mpfr_mul(r19957, r19955, r19956, MPFR_RNDN);
        ;
        mpfr_mul(r19959, r19952, r19958, MPFR_RNDN);
        mpfr_mul(r19960, r19949, r19949, MPFR_RNDN);
        mpfr_mul(r19961, r19959, r19960, MPFR_RNDN);
        mpfr_sub(r19962, r19957, r19961, MPFR_RNDN);
        mpfr_log(r19963, r19949, MPFR_RNDN);
        mpfr_div(r19964, r19963, r19952, MPFR_RNDN);
        mpfr_div(r19965, r19950, r19952, MPFR_RNDN);
        mpfr_log(r19966, r19965, MPFR_RNDN);
        mpfr_div(r19967, r19966, r19952, MPFR_RNDN);
        mpfr_sub(r19968, r19964, r19967, MPFR_RNDN);
        mpfr_mul(r19969, r19950, r19968, MPFR_RNDN);
        mpfr_add(r19970, r19962, r19969, MPFR_RNDN);
        return mpfr_get_d(r19970, MPFR_RNDN);
}

