#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 r9833 = 1.0f;
        float r9834 = 5.0f;
        float r9835 = v;
        float r9836 = r9835 * r9835;
        float r9837 = r9834 * r9836;
        float r9838 = r9833 - r9837;
        float r9839 = atan2(1.0, 0.0);
        float r9840 = t;
        float r9841 = r9839 * r9840;
        float r9842 = 2.0f;
        float r9843 = 3.0f;
        float r9844 = r9843 * r9836;
        float r9845 = r9833 - r9844;
        float r9846 = r9842 * r9845;
        float r9847 = sqrt(r9846);
        float r9848 = r9841 * r9847;
        float r9849 = r9833 - r9836;
        float r9850 = r9848 * r9849;
        float r9851 = r9838 / r9850;
        return r9851;
}

double f_id(double v, double t) {
        double r9852 = 1.0;
        double r9853 = 5.0;
        double r9854 = v;
        double r9855 = r9854 * r9854;
        double r9856 = r9853 * r9855;
        double r9857 = r9852 - r9856;
        double r9858 = atan2(1.0, 0.0);
        double r9859 = t;
        double r9860 = r9858 * r9859;
        double r9861 = 2.0;
        double r9862 = 3.0;
        double r9863 = r9862 * r9855;
        double r9864 = r9852 - r9863;
        double r9865 = r9861 * r9864;
        double r9866 = sqrt(r9865);
        double r9867 = r9860 * r9866;
        double r9868 = r9852 - r9855;
        double r9869 = r9867 * r9868;
        double r9870 = r9857 / r9869;
        return r9870;
}


double f_of(float v, float t) {
        float r9871 = 1.0f;
        float r9872 = v;
        float r9873 = r9872 * r9872;
        float r9874 = 5.0f;
        float r9875 = r9873 * r9874;
        float r9876 = r9871 - r9875;
        float r9877 = atan2(1.0, 0.0);
        float r9878 = r9876 / r9877;
        float r9879 = 2.0f;
        float r9880 = 3.0f;
        float r9881 = r9880 * r9879;
        float r9882 = r9873 * r9881;
        float r9883 = r9879 - r9882;
        float r9884 = sqrt(r9883);
        float r9885 = r9878 / r9884;
        float r9886 = t;
        float r9887 = r9871 - r9873;
        float r9888 = r9886 * r9887;
        float r9889 = r9885 / r9888;
        return r9889;
}

double f_od(double v, double t) {
        double r9890 = 1.0;
        double r9891 = v;
        double r9892 = r9891 * r9891;
        double r9893 = 5.0;
        double r9894 = r9892 * r9893;
        double r9895 = r9890 - r9894;
        double r9896 = atan2(1.0, 0.0);
        double r9897 = r9895 / r9896;
        double r9898 = 2.0;
        double r9899 = 3.0;
        double r9900 = r9899 * r9898;
        double r9901 = r9892 * r9900;
        double r9902 = r9898 - r9901;
        double r9903 = sqrt(r9902);
        double r9904 = r9897 / r9903;
        double r9905 = t;
        double r9906 = r9890 - r9892;
        double r9907 = r9905 * r9906;
        double r9908 = r9904 / r9907;
        return r9908;
}

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 r9909, r9910, r9911, r9912, r9913, r9914, r9915, r9916, r9917, r9918, r9919, r9920, r9921, r9922, r9923, r9924, r9925, r9926, r9927;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9909, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9910, "5", 10, MPFR_RNDN);
        mpfr_init(r9911);
        mpfr_init(r9912);
        mpfr_init(r9913);
        mpfr_init(r9914);
        mpfr_init(r9915);
        mpfr_init(r9916);
        mpfr_init(r9917);
        mpfr_init_set_str(r9918, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9919, "3", 10, MPFR_RNDN);
        mpfr_init(r9920);
        mpfr_init(r9921);
        mpfr_init(r9922);
        mpfr_init(r9923);
        mpfr_init(r9924);
        mpfr_init(r9925);
        mpfr_init(r9926);
        mpfr_init(r9927);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r9911, v, MPFR_RNDN);
        mpfr_mul(r9912, r9911, r9911, MPFR_RNDN);
        mpfr_mul(r9913, r9910, r9912, MPFR_RNDN);
        mpfr_sub(r9914, r9909, r9913, MPFR_RNDN);
        mpfr_const_pi(r9915, MPFR_RNDN);
        mpfr_set_d(r9916, t, MPFR_RNDN);
        mpfr_mul(r9917, r9915, r9916, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9920, r9919, r9912, MPFR_RNDN);
        mpfr_sub(r9921, r9909, r9920, MPFR_RNDN);
        mpfr_mul(r9922, r9918, r9921, MPFR_RNDN);
        mpfr_sqrt(r9923, r9922, MPFR_RNDN);
        mpfr_mul(r9924, r9917, r9923, MPFR_RNDN);
        mpfr_sub(r9925, r9909, r9912, MPFR_RNDN);
        mpfr_mul(r9926, r9924, r9925, MPFR_RNDN);
        mpfr_div(r9927, r9914, r9926, MPFR_RNDN);
        return mpfr_get_d(r9927, MPFR_RNDN);
}

static mpfr_t r9928, r9929, r9930, r9931, r9932, r9933, r9934, r9935, r9936, r9937, r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9928, "1", 10, MPFR_RNDN);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init_set_str(r9931, "5", 10, MPFR_RNDN);
        mpfr_init(r9932);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init(r9935);
        mpfr_init_set_str(r9936, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9937, "3", 10, MPFR_RNDN);
        mpfr_init(r9938);
        mpfr_init(r9939);
        mpfr_init(r9940);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
        mpfr_init(r9946);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r9929, v, MPFR_RNDN);
        mpfr_mul(r9930, r9929, r9929, MPFR_RNDN);
        ;
        mpfr_mul(r9932, r9930, r9931, MPFR_RNDN);
        mpfr_sub(r9933, r9928, r9932, MPFR_RNDN);
        mpfr_const_pi(r9934, MPFR_RNDN);
        mpfr_div(r9935, r9933, r9934, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9938, r9937, r9936, MPFR_RNDN);
        mpfr_mul(r9939, r9930, r9938, MPFR_RNDN);
        mpfr_sub(r9940, r9936, r9939, MPFR_RNDN);
        mpfr_sqrt(r9941, r9940, MPFR_RNDN);
        mpfr_div(r9942, r9935, r9941, MPFR_RNDN);
        mpfr_set_d(r9943, t, MPFR_RNDN);
        mpfr_sub(r9944, r9928, r9930, MPFR_RNDN);
        mpfr_mul(r9945, r9943, r9944, MPFR_RNDN);
        mpfr_div(r9946, r9942, r9945, MPFR_RNDN);
        return mpfr_get_d(r9946, MPFR_RNDN);
}

static mpfr_t r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957, r9958, r9959, r9960, r9961, r9962, r9963, r9964, r9965;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9947, "1", 10, MPFR_RNDN);
        mpfr_init(r9948);
        mpfr_init(r9949);
        mpfr_init_set_str(r9950, "5", 10, MPFR_RNDN);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init_set_str(r9955, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9956, "3", 10, MPFR_RNDN);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init(r9963);
        mpfr_init(r9964);
        mpfr_init(r9965);
}

double f_dm(double v, double t) {
        ;
        mpfr_set_d(r9948, v, MPFR_RNDN);
        mpfr_mul(r9949, r9948, r9948, MPFR_RNDN);
        ;
        mpfr_mul(r9951, r9949, r9950, MPFR_RNDN);
        mpfr_sub(r9952, r9947, r9951, MPFR_RNDN);
        mpfr_const_pi(r9953, MPFR_RNDN);
        mpfr_div(r9954, r9952, r9953, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9957, r9956, r9955, MPFR_RNDN);
        mpfr_mul(r9958, r9949, r9957, MPFR_RNDN);
        mpfr_sub(r9959, r9955, r9958, MPFR_RNDN);
        mpfr_sqrt(r9960, r9959, MPFR_RNDN);
        mpfr_div(r9961, r9954, r9960, MPFR_RNDN);
        mpfr_set_d(r9962, t, MPFR_RNDN);
        mpfr_sub(r9963, r9947, r9949, MPFR_RNDN);
        mpfr_mul(r9964, r9962, r9963, MPFR_RNDN);
        mpfr_div(r9965, r9961, r9964, MPFR_RNDN);
        return mpfr_get_d(r9965, MPFR_RNDN);
}

