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

char *name = "Falkner and Boettcher, Equation (20:1,3)";

double f_if(float v, float t) {
        float r26831 = 1;
        float r26832 = 5;
        float r26833 = v;
        float r26834 = r26833 * r26833;
        float r26835 = r26832 * r26834;
        float r26836 = r26831 - r26835;
        float r26837 = atan2(1.0, 0.0);
        float r26838 = t;
        float r26839 = r26837 * r26838;
        float r26840 = 2;
        float r26841 = 3;
        float r26842 = r26841 * r26834;
        float r26843 = r26831 - r26842;
        float r26844 = r26840 * r26843;
        float r26845 = sqrt(r26844);
        float r26846 = r26839 * r26845;
        float r26847 = r26831 - r26834;
        float r26848 = r26846 * r26847;
        float r26849 = r26836 / r26848;
        return r26849;
}

double f_id(double v, double t) {
        double r26850 = 1;
        double r26851 = 5;
        double r26852 = v;
        double r26853 = r26852 * r26852;
        double r26854 = r26851 * r26853;
        double r26855 = r26850 - r26854;
        double r26856 = atan2(1.0, 0.0);
        double r26857 = t;
        double r26858 = r26856 * r26857;
        double r26859 = 2;
        double r26860 = 3;
        double r26861 = r26860 * r26853;
        double r26862 = r26850 - r26861;
        double r26863 = r26859 * r26862;
        double r26864 = sqrt(r26863);
        double r26865 = r26858 * r26864;
        double r26866 = r26850 - r26853;
        double r26867 = r26865 * r26866;
        double r26868 = r26855 / r26867;
        return r26868;
}


double f_of(float v, float t) {
        float r26869 = 3;
        float r26870 = 2;
        float r26871 = r26869 / r26870;
        float r26872 = t;
        float r26873 = sqrt(r26870);
        float r26874 = r26872 * r26873;
        float r26875 = r26871 / r26874;
        float r26876 = v;
        float r26877 = atan2(1.0, 0.0);
        float r26878 = r26877 / r26876;
        float r26879 = r26876 / r26878;
        float r26880 = 27/2;
        float r26881 = r26880 / r26877;
        float r26882 = 4;
        float r26883 = pow(r26876, r26882);
        float r26884 = r26883 / r26872;
        float r26885 = 5;
        float r26886 = pow(r26873, r26885);
        float r26887 = r26884 / r26886;
        float r26888 = 1;
        float r26889 = r26888 / r26877;
        float r26890 = r26889 / r26874;
        float r26891 = fma(r26881, r26887, r26890);
        float r26892 = fma(r26875, r26879, r26891);
        float r26893 = 12;
        float r26894 = r26883 / r26877;
        float r26895 = r26870 * r26872;
        float r26896 = r26895 * r26873;
        float r26897 = r26894 / r26896;
        float r26898 = r26882 / r26872;
        float r26899 = r26898 / r26873;
        float r26900 = r26894 + r26879;
        float r26901 = r26899 * r26900;
        float r26902 = fma(r26893, r26897, r26901);
        float r26903 = r26892 - r26902;
        return r26903;
}

double f_od(double v, double t) {
        double r26904 = 3;
        double r26905 = 2;
        double r26906 = r26904 / r26905;
        double r26907 = t;
        double r26908 = sqrt(r26905);
        double r26909 = r26907 * r26908;
        double r26910 = r26906 / r26909;
        double r26911 = v;
        double r26912 = atan2(1.0, 0.0);
        double r26913 = r26912 / r26911;
        double r26914 = r26911 / r26913;
        double r26915 = 27/2;
        double r26916 = r26915 / r26912;
        double r26917 = 4;
        double r26918 = pow(r26911, r26917);
        double r26919 = r26918 / r26907;
        double r26920 = 5;
        double r26921 = pow(r26908, r26920);
        double r26922 = r26919 / r26921;
        double r26923 = 1;
        double r26924 = r26923 / r26912;
        double r26925 = r26924 / r26909;
        double r26926 = fma(r26916, r26922, r26925);
        double r26927 = fma(r26910, r26914, r26926);
        double r26928 = 12;
        double r26929 = r26918 / r26912;
        double r26930 = r26905 * r26907;
        double r26931 = r26930 * r26908;
        double r26932 = r26929 / r26931;
        double r26933 = r26917 / r26907;
        double r26934 = r26933 / r26908;
        double r26935 = r26929 + r26914;
        double r26936 = r26934 * r26935;
        double r26937 = fma(r26928, r26932, r26936);
        double r26938 = r26927 - r26937;
        return r26938;
}

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 r26939, r26940, r26941, r26942, r26943, r26944, r26945, r26946, r26947, r26948, r26949, r26950, r26951, r26952, r26953, r26954, r26955, r26956, r26957;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26939, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26940, "5", 10, MPFR_RNDN);
        mpfr_init(r26941);
        mpfr_init(r26942);
        mpfr_init(r26943);
        mpfr_init(r26944);
        mpfr_init(r26945);
        mpfr_init(r26946);
        mpfr_init(r26947);
        mpfr_init_set_str(r26948, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26949, "3", 10, MPFR_RNDN);
        mpfr_init(r26950);
        mpfr_init(r26951);
        mpfr_init(r26952);
        mpfr_init(r26953);
        mpfr_init(r26954);
        mpfr_init(r26955);
        mpfr_init(r26956);
        mpfr_init(r26957);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r26941, v, MPFR_RNDN);
        mpfr_mul(r26942, r26941, r26941, MPFR_RNDN);
        mpfr_mul(r26943, r26940, r26942, MPFR_RNDN);
        mpfr_sub(r26944, r26939, r26943, MPFR_RNDN);
        mpfr_const_pi(r26945, MPFR_RNDN);
        mpfr_set_d(r26946, t, MPFR_RNDN);
        mpfr_mul(r26947, r26945, r26946, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26950, r26949, r26942, MPFR_RNDN);
        mpfr_sub(r26951, r26939, r26950, MPFR_RNDN);
        mpfr_mul(r26952, r26948, r26951, MPFR_RNDN);
        mpfr_sqrt(r26953, r26952, MPFR_RNDN);
        mpfr_mul(r26954, r26947, r26953, MPFR_RNDN);
        mpfr_sub(r26955, r26939, r26942, MPFR_RNDN);
        mpfr_mul(r26956, r26954, r26955, MPFR_RNDN);
        mpfr_div(r26957, r26944, r26956, MPFR_RNDN);
        return mpfr_get_d(r26957, MPFR_RNDN);
}

static mpfr_t r26958, r26959, r26960, r26961, r26962, r26963, r26964, r26965, r26966, r26967, r26968, r26969, r26970, r26971, r26972, r26973, r26974, r26975, r26976, r26977, r26978, r26979, r26980, r26981, r26982, r26983, r26984, r26985, r26986, r26987, r26988, r26989, r26990, r26991, r26992;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26958, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26959, "2", 10, MPFR_RNDN);
        mpfr_init(r26960);
        mpfr_init(r26961);
        mpfr_init(r26962);
        mpfr_init(r26963);
        mpfr_init(r26964);
        mpfr_init(r26965);
        mpfr_init(r26966);
        mpfr_init(r26967);
        mpfr_init(r26968);
        mpfr_init_set_str(r26969, "27/2", 10, MPFR_RNDN);
        mpfr_init(r26970);
        mpfr_init_set_str(r26971, "4", 10, MPFR_RNDN);
        mpfr_init(r26972);
        mpfr_init(r26973);
        mpfr_init_set_str(r26974, "5", 10, MPFR_RNDN);
        mpfr_init(r26975);
        mpfr_init(r26976);
        mpfr_init_set_str(r26977, "1", 10, MPFR_RNDN);
        mpfr_init(r26978);
        mpfr_init(r26979);
        mpfr_init(r26980);
        mpfr_init(r26981);
        mpfr_init_set_str(r26982, "12", 10, MPFR_RNDN);
        mpfr_init(r26983);
        mpfr_init(r26984);
        mpfr_init(r26985);
        mpfr_init(r26986);
        mpfr_init(r26987);
        mpfr_init(r26988);
        mpfr_init(r26989);
        mpfr_init(r26990);
        mpfr_init(r26991);
        mpfr_init(r26992);
}

double f_fm(double v, double t) {
        ;
        ;
        mpfr_div(r26960, r26958, r26959, MPFR_RNDN);
        mpfr_set_d(r26961, t, MPFR_RNDN);
        mpfr_sqrt(r26962, r26959, MPFR_RNDN);
        mpfr_mul(r26963, r26961, r26962, MPFR_RNDN);
        mpfr_div(r26964, r26960, r26963, MPFR_RNDN);
        mpfr_set_d(r26965, v, MPFR_RNDN);
        mpfr_const_pi(r26966, MPFR_RNDN);
        mpfr_div(r26967, r26966, r26965, MPFR_RNDN);
        mpfr_div(r26968, r26965, r26967, MPFR_RNDN);
        ;
        mpfr_div(r26970, r26969, r26966, MPFR_RNDN);
        ;
        mpfr_pow(r26972, r26965, r26971, MPFR_RNDN);
        mpfr_div(r26973, r26972, r26961, MPFR_RNDN);
        ;
        mpfr_pow(r26975, r26962, r26974, MPFR_RNDN);
        mpfr_div(r26976, r26973, r26975, MPFR_RNDN);
        ;
        mpfr_div(r26978, r26977, r26966, MPFR_RNDN);
        mpfr_div(r26979, r26978, r26963, MPFR_RNDN);
        mpfr_fma(r26980, r26970, r26976, r26979, MPFR_RNDN);
        mpfr_fma(r26981, r26964, r26968, r26980, MPFR_RNDN);
        ;
        mpfr_div(r26983, r26972, r26966, MPFR_RNDN);
        mpfr_mul(r26984, r26959, r26961, MPFR_RNDN);
        mpfr_mul(r26985, r26984, r26962, MPFR_RNDN);
        mpfr_div(r26986, r26983, r26985, MPFR_RNDN);
        mpfr_div(r26987, r26971, r26961, MPFR_RNDN);
        mpfr_div(r26988, r26987, r26962, MPFR_RNDN);
        mpfr_add(r26989, r26983, r26968, MPFR_RNDN);
        mpfr_mul(r26990, r26988, r26989, MPFR_RNDN);
        mpfr_fma(r26991, r26982, r26986, r26990, MPFR_RNDN);
        mpfr_sub(r26992, r26981, r26991, MPFR_RNDN);
        return mpfr_get_d(r26992, MPFR_RNDN);
}

static mpfr_t r26993, r26994, r26995, r26996, r26997, r26998, r26999, r27000, r27001, r27002, r27003, r27004, r27005, r27006, r27007, r27008, r27009, r27010, r27011, r27012, r27013, r27014, r27015, r27016, r27017, r27018, r27019, r27020, r27021, r27022, r27023, r27024, r27025, r27026, r27027;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26993, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26994, "2", 10, MPFR_RNDN);
        mpfr_init(r26995);
        mpfr_init(r26996);
        mpfr_init(r26997);
        mpfr_init(r26998);
        mpfr_init(r26999);
        mpfr_init(r27000);
        mpfr_init(r27001);
        mpfr_init(r27002);
        mpfr_init(r27003);
        mpfr_init_set_str(r27004, "27/2", 10, MPFR_RNDN);
        mpfr_init(r27005);
        mpfr_init_set_str(r27006, "4", 10, MPFR_RNDN);
        mpfr_init(r27007);
        mpfr_init(r27008);
        mpfr_init_set_str(r27009, "5", 10, MPFR_RNDN);
        mpfr_init(r27010);
        mpfr_init(r27011);
        mpfr_init_set_str(r27012, "1", 10, MPFR_RNDN);
        mpfr_init(r27013);
        mpfr_init(r27014);
        mpfr_init(r27015);
        mpfr_init(r27016);
        mpfr_init_set_str(r27017, "12", 10, MPFR_RNDN);
        mpfr_init(r27018);
        mpfr_init(r27019);
        mpfr_init(r27020);
        mpfr_init(r27021);
        mpfr_init(r27022);
        mpfr_init(r27023);
        mpfr_init(r27024);
        mpfr_init(r27025);
        mpfr_init(r27026);
        mpfr_init(r27027);
}

double f_dm(double v, double t) {
        ;
        ;
        mpfr_div(r26995, r26993, r26994, MPFR_RNDN);
        mpfr_set_d(r26996, t, MPFR_RNDN);
        mpfr_sqrt(r26997, r26994, MPFR_RNDN);
        mpfr_mul(r26998, r26996, r26997, MPFR_RNDN);
        mpfr_div(r26999, r26995, r26998, MPFR_RNDN);
        mpfr_set_d(r27000, v, MPFR_RNDN);
        mpfr_const_pi(r27001, MPFR_RNDN);
        mpfr_div(r27002, r27001, r27000, MPFR_RNDN);
        mpfr_div(r27003, r27000, r27002, MPFR_RNDN);
        ;
        mpfr_div(r27005, r27004, r27001, MPFR_RNDN);
        ;
        mpfr_pow(r27007, r27000, r27006, MPFR_RNDN);
        mpfr_div(r27008, r27007, r26996, MPFR_RNDN);
        ;
        mpfr_pow(r27010, r26997, r27009, MPFR_RNDN);
        mpfr_div(r27011, r27008, r27010, MPFR_RNDN);
        ;
        mpfr_div(r27013, r27012, r27001, MPFR_RNDN);
        mpfr_div(r27014, r27013, r26998, MPFR_RNDN);
        mpfr_fma(r27015, r27005, r27011, r27014, MPFR_RNDN);
        mpfr_fma(r27016, r26999, r27003, r27015, MPFR_RNDN);
        ;
        mpfr_div(r27018, r27007, r27001, MPFR_RNDN);
        mpfr_mul(r27019, r26994, r26996, MPFR_RNDN);
        mpfr_mul(r27020, r27019, r26997, MPFR_RNDN);
        mpfr_div(r27021, r27018, r27020, MPFR_RNDN);
        mpfr_div(r27022, r27006, r26996, MPFR_RNDN);
        mpfr_div(r27023, r27022, r26997, MPFR_RNDN);
        mpfr_add(r27024, r27018, r27003, MPFR_RNDN);
        mpfr_mul(r27025, r27023, r27024, MPFR_RNDN);
        mpfr_fma(r27026, r27017, r27021, r27025, MPFR_RNDN);
        mpfr_sub(r27027, r27016, r27026, MPFR_RNDN);
        return mpfr_get_d(r27027, MPFR_RNDN);
}

