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

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

double f_if(float F, float l) {
        float r19858 = atan2(1.0, 0.0);
        float r19859 = l;
        float r19860 = r19858 * r19859;
        float r19861 = F;
        float r19862 = r19861 * r19861;
        float r19863 = 1.0/r19862;
        float r19864 = tan(r19860);
        float r19865 = r19863 * r19864;
        float r19866 = r19860 - r19865;
        return r19866;
}

double f_id(double F, double l) {
        double r19867 = atan2(1.0, 0.0);
        double r19868 = l;
        double r19869 = r19867 * r19868;
        double r19870 = F;
        double r19871 = r19870 * r19870;
        double r19872 = 1.0/r19871;
        double r19873 = tan(r19869);
        double r19874 = r19872 * r19873;
        double r19875 = r19869 - r19874;
        return r19875;
}


double f_of(float F, float l) {
        float r19876 = l;
        float r19877 = -2.0207950218338678e-25f;
        bool r19878 = r19876 <= r19877;
        float r19879 = atan2(1.0, 0.0);
        float r19880 = r19876 * r19879;
        float r19881 = r19879 / r19876;
        float r19882 = -r19881;
        float r19883 = sin(r19882);
        float r19884 = F;
        float r19885 = r19884 * r19884;
        float r19886 = cos(r19881);
        float r19887 = r19885 * r19886;
        float r19888 = r19883 / r19887;
        float r19889 = r19880 - r19888;
        float r19890 = 0.00014906890311918458f;
        bool r19891 = r19876 <= r19890;
        float r19892 = r19879 * r19876;
        float r19893 = 0.3333333333333333f;
        float r19894 = 3.0f;
        float r19895 = pow(r19879, r19894);
        float r19896 = pow(r19876, r19894);
        float r19897 = r19895 * r19896;
        float r19898 = r19884 * r19884;
        float r19899 = r19897 / r19898;
        float r19900 = r19893 * r19899;
        float r19901 = r19892 / r19898;
        float r19902 = r19900 + r19901;
        float r19903 = r19892 - r19902;
        float r19904 = 1.0/r19885;
        float r19905 = -r19904;
        float r19906 = sin(r19881);
        float r19907 = r19886 / r19906;
        float r19908 = r19905 / r19907;
        float r19909 = r19880 - r19908;
        float r19910 = r19891 ? r19903 : r19909;
        float r19911 = r19878 ? r19889 : r19910;
        return r19911;
}

double f_od(double F, double l) {
        double r19912 = l;
        double r19913 = -2.0207950218338678e-25;
        bool r19914 = r19912 <= r19913;
        double r19915 = atan2(1.0, 0.0);
        double r19916 = r19912 * r19915;
        double r19917 = r19915 / r19912;
        double r19918 = -r19917;
        double r19919 = sin(r19918);
        double r19920 = F;
        double r19921 = r19920 * r19920;
        double r19922 = cos(r19917);
        double r19923 = r19921 * r19922;
        double r19924 = r19919 / r19923;
        double r19925 = r19916 - r19924;
        double r19926 = 0.00014906890311918458;
        bool r19927 = r19912 <= r19926;
        double r19928 = r19915 * r19912;
        double r19929 = 0.3333333333333333;
        double r19930 = 3.0;
        double r19931 = pow(r19915, r19930);
        double r19932 = pow(r19912, r19930);
        double r19933 = r19931 * r19932;
        double r19934 = r19920 * r19920;
        double r19935 = r19933 / r19934;
        double r19936 = r19929 * r19935;
        double r19937 = r19928 / r19934;
        double r19938 = r19936 + r19937;
        double r19939 = r19928 - r19938;
        double r19940 = 1.0/r19921;
        double r19941 = -r19940;
        double r19942 = sin(r19917);
        double r19943 = r19922 / r19942;
        double r19944 = r19941 / r19943;
        double r19945 = r19916 - r19944;
        double r19946 = r19927 ? r19939 : r19945;
        double r19947 = r19914 ? r19925 : r19946;
        return r19947;
}

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 r19948, r19949, r19950, r19951, r19952, r19953, r19954, r19955, r19956;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init(r19956);
}

double f_im(double F, double l) {
        mpfr_const_pi(r19948, MPFR_RNDN);
        mpfr_set_d(r19949, l, MPFR_RNDN);
        mpfr_mul(r19950, r19948, r19949, MPFR_RNDN);
        mpfr_set_d(r19951, F, MPFR_RNDN);
        mpfr_sqr(r19952, r19951, MPFR_RNDN);
        mpfr_ui_div(r19953, 1, r19952, MPFR_RNDN);
        mpfr_tan(r19954, r19950, MPFR_RNDN);
        mpfr_mul(r19955, r19953, r19954, MPFR_RNDN);
        mpfr_sub(r19956, r19950, r19955, MPFR_RNDN);
        return mpfr_get_d(r19956, MPFR_RNDN);
}

static mpfr_t r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986, r19987, r19988, r19989, r19990, r19991, r19992;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19957);
        mpfr_init_set_str(r19958, "-2.0207950218338678e-25", 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);
        mpfr_init_set_str(r19971, "0.00014906890311918458", 10, MPFR_RNDN);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init_set_str(r19974, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19975, "3", 10, MPFR_RNDN);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init(r19980);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
        mpfr_init(r19987);
        mpfr_init(r19988);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init(r19992);
}

double f_fm(double F, double l) {
        mpfr_set_d(r19957, l, MPFR_RNDN);
        ;
        mpfr_set_si(r19959, mpfr_cmp(r19957, r19958) <= 0, MPFR_RNDN);
        mpfr_const_pi(r19960, MPFR_RNDN);
        mpfr_mul(r19961, r19957, r19960, MPFR_RNDN);
        mpfr_div(r19962, r19960, r19957, MPFR_RNDN);
        mpfr_neg(r19963, r19962, MPFR_RNDN);
        mpfr_sin(r19964, r19963, MPFR_RNDN);
        mpfr_set_d(r19965, F, MPFR_RNDN);
        mpfr_mul(r19966, r19965, r19965, MPFR_RNDN);
        mpfr_cos(r19967, r19962, MPFR_RNDN);
        mpfr_mul(r19968, r19966, r19967, MPFR_RNDN);
        mpfr_div(r19969, r19964, r19968, MPFR_RNDN);
        mpfr_sub(r19970, r19961, r19969, MPFR_RNDN);
        ;
        mpfr_set_si(r19972, mpfr_cmp(r19957, r19971) <= 0, MPFR_RNDN);
        mpfr_mul(r19973, r19960, r19957, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r19976, r19960, r19975, MPFR_RNDN);
        mpfr_pow(r19977, r19957, r19975, MPFR_RNDN);
        mpfr_mul(r19978, r19976, r19977, MPFR_RNDN);
        mpfr_sqr(r19979, r19965, MPFR_RNDN);
        mpfr_div(r19980, r19978, r19979, MPFR_RNDN);
        mpfr_mul(r19981, r19974, r19980, MPFR_RNDN);
        mpfr_div(r19982, r19973, r19979, MPFR_RNDN);
        mpfr_add(r19983, r19981, r19982, MPFR_RNDN);
        mpfr_sub(r19984, r19973, r19983, MPFR_RNDN);
        mpfr_ui_div(r19985, 1, r19966, MPFR_RNDN);
        mpfr_neg(r19986, r19985, MPFR_RNDN);
        mpfr_sin(r19987, r19962, MPFR_RNDN);
        mpfr_div(r19988, r19967, r19987, MPFR_RNDN);
        mpfr_div(r19989, r19986, r19988, MPFR_RNDN);
        mpfr_sub(r19990, r19961, r19989, MPFR_RNDN);
        if (mpfr_get_si(r19972, MPFR_RNDN)) { mpfr_set(r19991, r19984, MPFR_RNDN); } else { mpfr_set(r19991, r19990, MPFR_RNDN); };
        if (mpfr_get_si(r19959, MPFR_RNDN)) { mpfr_set(r19992, r19970, MPFR_RNDN); } else { mpfr_set(r19992, r19991, MPFR_RNDN); };
        return mpfr_get_d(r19992, MPFR_RNDN);
}

static mpfr_t r19993, r19994, r19995, r19996, r19997, r19998, r19999, r20000, r20001, r20002, r20003, r20004, r20005, r20006, r20007, r20008, r20009, r20010, r20011, r20012, r20013, r20014, r20015, r20016, r20017, r20018, r20019, r20020, r20021, r20022, r20023, r20024, r20025, r20026, r20027, r20028;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19993);
        mpfr_init_set_str(r19994, "-2.0207950218338678e-25", 10, MPFR_RNDN);
        mpfr_init(r19995);
        mpfr_init(r19996);
        mpfr_init(r19997);
        mpfr_init(r19998);
        mpfr_init(r19999);
        mpfr_init(r20000);
        mpfr_init(r20001);
        mpfr_init(r20002);
        mpfr_init(r20003);
        mpfr_init(r20004);
        mpfr_init(r20005);
        mpfr_init(r20006);
        mpfr_init_set_str(r20007, "0.00014906890311918458", 10, MPFR_RNDN);
        mpfr_init(r20008);
        mpfr_init(r20009);
        mpfr_init_set_str(r20010, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20011, "3", 10, MPFR_RNDN);
        mpfr_init(r20012);
        mpfr_init(r20013);
        mpfr_init(r20014);
        mpfr_init(r20015);
        mpfr_init(r20016);
        mpfr_init(r20017);
        mpfr_init(r20018);
        mpfr_init(r20019);
        mpfr_init(r20020);
        mpfr_init(r20021);
        mpfr_init(r20022);
        mpfr_init(r20023);
        mpfr_init(r20024);
        mpfr_init(r20025);
        mpfr_init(r20026);
        mpfr_init(r20027);
        mpfr_init(r20028);
}

double f_dm(double F, double l) {
        mpfr_set_d(r19993, l, MPFR_RNDN);
        ;
        mpfr_set_si(r19995, mpfr_cmp(r19993, r19994) <= 0, MPFR_RNDN);
        mpfr_const_pi(r19996, MPFR_RNDN);
        mpfr_mul(r19997, r19993, r19996, MPFR_RNDN);
        mpfr_div(r19998, r19996, r19993, MPFR_RNDN);
        mpfr_neg(r19999, r19998, MPFR_RNDN);
        mpfr_sin(r20000, r19999, MPFR_RNDN);
        mpfr_set_d(r20001, F, MPFR_RNDN);
        mpfr_mul(r20002, r20001, r20001, MPFR_RNDN);
        mpfr_cos(r20003, r19998, MPFR_RNDN);
        mpfr_mul(r20004, r20002, r20003, MPFR_RNDN);
        mpfr_div(r20005, r20000, r20004, MPFR_RNDN);
        mpfr_sub(r20006, r19997, r20005, MPFR_RNDN);
        ;
        mpfr_set_si(r20008, mpfr_cmp(r19993, r20007) <= 0, MPFR_RNDN);
        mpfr_mul(r20009, r19996, r19993, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20012, r19996, r20011, MPFR_RNDN);
        mpfr_pow(r20013, r19993, r20011, MPFR_RNDN);
        mpfr_mul(r20014, r20012, r20013, MPFR_RNDN);
        mpfr_sqr(r20015, r20001, MPFR_RNDN);
        mpfr_div(r20016, r20014, r20015, MPFR_RNDN);
        mpfr_mul(r20017, r20010, r20016, MPFR_RNDN);
        mpfr_div(r20018, r20009, r20015, MPFR_RNDN);
        mpfr_add(r20019, r20017, r20018, MPFR_RNDN);
        mpfr_sub(r20020, r20009, r20019, MPFR_RNDN);
        mpfr_ui_div(r20021, 1, r20002, MPFR_RNDN);
        mpfr_neg(r20022, r20021, MPFR_RNDN);
        mpfr_sin(r20023, r19998, MPFR_RNDN);
        mpfr_div(r20024, r20003, r20023, MPFR_RNDN);
        mpfr_div(r20025, r20022, r20024, MPFR_RNDN);
        mpfr_sub(r20026, r19997, r20025, MPFR_RNDN);
        if (mpfr_get_si(r20008, MPFR_RNDN)) { mpfr_set(r20027, r20020, MPFR_RNDN); } else { mpfr_set(r20027, r20026, MPFR_RNDN); };
        if (mpfr_get_si(r19995, MPFR_RNDN)) { mpfr_set(r20028, r20006, MPFR_RNDN); } else { mpfr_set(r20028, r20027, MPFR_RNDN); };
        return mpfr_get_d(r20028, MPFR_RNDN);
}

