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

char *name = "Henrywood and Agarwal, Equation (3)";

double f_if(float c0, float A, float V, float l) {
        float r9834 = c0;
        float r9835 = A;
        float r9836 = V;
        float r9837 = l;
        float r9838 = r9836 * r9837;
        float r9839 = r9835 / r9838;
        float r9840 = sqrt(r9839);
        float r9841 = r9834 * r9840;
        return r9841;
}

double f_id(double c0, double A, double V, double l) {
        double r9842 = c0;
        double r9843 = A;
        double r9844 = V;
        double r9845 = l;
        double r9846 = r9844 * r9845;
        double r9847 = r9843 / r9846;
        double r9848 = sqrt(r9847);
        double r9849 = r9842 * r9848;
        return r9849;
}


double f_of(float c0, float A, float V, float l) {
        float r9850 = A;
        float r9851 = V;
        float r9852 = r9850 / r9851;
        float r9853 = -1.114378691831571e+295f;
        bool r9854 = r9852 <= r9853;
        float r9855 = c0;
        float r9856 = l;
        float r9857 = r9850 / r9856;
        float r9858 = sqrt(r9857);
        float r9859 = sqrt(r9851);
        float r9860 = r9858 / r9859;
        float r9861 = r9855 * r9860;
        float r9862 = -2.9812881782882438e-288f;
        bool r9863 = r9852 <= r9862;
        float r9864 = 1.0f;
        float r9865 = r9864 / r9856;
        float r9866 = r9865 * r9852;
        float r9867 = sqrt(r9866);
        float r9868 = r9855 * r9867;
        float r9869 = 3.5883047723267483e-298f;
        bool r9870 = r9852 <= r9869;
        float r9871 = r9856 * r9851;
        float r9872 = r9850 / r9871;
        float r9873 = sqrt(r9872);
        float r9874 = r9873 * r9855;
        float r9875 = 3.511639093455415e+256f;
        bool r9876 = r9852 <= r9875;
        float r9877 = sqrt(r9852);
        float r9878 = sqrt(r9856);
        float r9879 = r9877 / r9878;
        float r9880 = r9855 * r9879;
        float r9881 = sqrt(r9850);
        float r9882 = r9855 * r9881;
        float r9883 = sqrt(r9871);
        float r9884 = r9882 / r9883;
        float r9885 = r9876 ? r9880 : r9884;
        float r9886 = r9870 ? r9874 : r9885;
        float r9887 = r9863 ? r9868 : r9886;
        float r9888 = r9854 ? r9861 : r9887;
        return r9888;
}

double f_od(double c0, double A, double V, double l) {
        double r9889 = A;
        double r9890 = V;
        double r9891 = r9889 / r9890;
        double r9892 = -1.114378691831571e+295;
        bool r9893 = r9891 <= r9892;
        double r9894 = c0;
        double r9895 = l;
        double r9896 = r9889 / r9895;
        double r9897 = sqrt(r9896);
        double r9898 = sqrt(r9890);
        double r9899 = r9897 / r9898;
        double r9900 = r9894 * r9899;
        double r9901 = -2.9812881782882438e-288;
        bool r9902 = r9891 <= r9901;
        double r9903 = 1.0;
        double r9904 = r9903 / r9895;
        double r9905 = r9904 * r9891;
        double r9906 = sqrt(r9905);
        double r9907 = r9894 * r9906;
        double r9908 = 3.5883047723267483e-298;
        bool r9909 = r9891 <= r9908;
        double r9910 = r9895 * r9890;
        double r9911 = r9889 / r9910;
        double r9912 = sqrt(r9911);
        double r9913 = r9912 * r9894;
        double r9914 = 3.511639093455415e+256;
        bool r9915 = r9891 <= r9914;
        double r9916 = sqrt(r9891);
        double r9917 = sqrt(r9895);
        double r9918 = r9916 / r9917;
        double r9919 = r9894 * r9918;
        double r9920 = sqrt(r9889);
        double r9921 = r9894 * r9920;
        double r9922 = sqrt(r9910);
        double r9923 = r9921 / r9922;
        double r9924 = r9915 ? r9919 : r9923;
        double r9925 = r9909 ? r9913 : r9924;
        double r9926 = r9902 ? r9907 : r9925;
        double r9927 = r9893 ? r9900 : r9926;
        return r9927;
}

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 r9928, r9929, r9930, r9931, r9932, r9933, r9934, r9935;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9928);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init(r9931);
        mpfr_init(r9932);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init(r9935);
}

double f_im(double c0, double A, double V, double l) {
        mpfr_set_d(r9928, c0, MPFR_RNDN);
        mpfr_set_d(r9929, A, MPFR_RNDN);
        mpfr_set_d(r9930, V, MPFR_RNDN);
        mpfr_set_d(r9931, l, MPFR_RNDN);
        mpfr_mul(r9932, r9930, r9931, MPFR_RNDN);
        mpfr_div(r9933, r9929, r9932, MPFR_RNDN);
        mpfr_sqrt(r9934, r9933, MPFR_RNDN);
        mpfr_mul(r9935, r9928, r9934, MPFR_RNDN);
        return mpfr_get_d(r9935, MPFR_RNDN);
}

static mpfr_t r9936, r9937, r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946, r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957, r9958, r9959, r9960, r9961, r9962, r9963, r9964, r9965, r9966, r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init(r9938);
        mpfr_init_set_str(r9939, "-1.114378691831571e+295", 10, MPFR_RNDN);
        mpfr_init(r9940);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
        mpfr_init(r9946);
        mpfr_init(r9947);
        mpfr_init_set_str(r9948, "-2.9812881782882438e-288", 10, MPFR_RNDN);
        mpfr_init(r9949);
        mpfr_init_set_str(r9950, "1", 10, MPFR_RNDN);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init_set_str(r9955, "3.5883047723267483e-298", 10, MPFR_RNDN);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init_set_str(r9961, "3.511639093455415e+256", 10, MPFR_RNDN);
        mpfr_init(r9962);
        mpfr_init(r9963);
        mpfr_init(r9964);
        mpfr_init(r9965);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init(r9971);
        mpfr_init(r9972);
        mpfr_init(r9973);
        mpfr_init(r9974);
}

double f_fm(double c0, double A, double V, double l) {
        mpfr_set_d(r9936, A, MPFR_RNDN);
        mpfr_set_d(r9937, V, MPFR_RNDN);
        mpfr_div(r9938, r9936, r9937, MPFR_RNDN);
        ;
        mpfr_set_si(r9940, mpfr_cmp(r9938, r9939) <= 0, MPFR_RNDN);
        mpfr_set_d(r9941, c0, MPFR_RNDN);
        mpfr_set_d(r9942, l, MPFR_RNDN);
        mpfr_div(r9943, r9936, r9942, MPFR_RNDN);
        mpfr_sqrt(r9944, r9943, MPFR_RNDN);
        mpfr_sqrt(r9945, r9937, MPFR_RNDN);
        mpfr_div(r9946, r9944, r9945, MPFR_RNDN);
        mpfr_mul(r9947, r9941, r9946, MPFR_RNDN);
        ;
        mpfr_set_si(r9949, mpfr_cmp(r9938, r9948) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9951, r9950, r9942, MPFR_RNDN);
        mpfr_mul(r9952, r9951, r9938, MPFR_RNDN);
        mpfr_sqrt(r9953, r9952, MPFR_RNDN);
        mpfr_mul(r9954, r9941, r9953, MPFR_RNDN);
        ;
        mpfr_set_si(r9956, mpfr_cmp(r9938, r9955) <= 0, MPFR_RNDN);
        mpfr_mul(r9957, r9942, r9937, MPFR_RNDN);
        mpfr_div(r9958, r9936, r9957, MPFR_RNDN);
        mpfr_sqrt(r9959, r9958, MPFR_RNDN);
        mpfr_mul(r9960, r9959, r9941, MPFR_RNDN);
        ;
        mpfr_set_si(r9962, mpfr_cmp(r9938, r9961) <= 0, MPFR_RNDN);
        mpfr_sqrt(r9963, r9938, MPFR_RNDN);
        mpfr_sqrt(r9964, r9942, MPFR_RNDN);
        mpfr_div(r9965, r9963, r9964, MPFR_RNDN);
        mpfr_mul(r9966, r9941, r9965, MPFR_RNDN);
        mpfr_sqrt(r9967, r9936, MPFR_RNDN);
        mpfr_mul(r9968, r9941, r9967, MPFR_RNDN);
        mpfr_sqrt(r9969, r9957, MPFR_RNDN);
        mpfr_div(r9970, r9968, r9969, MPFR_RNDN);
        if (mpfr_get_si(r9962, MPFR_RNDN)) { mpfr_set(r9971, r9966, MPFR_RNDN); } else { mpfr_set(r9971, r9970, MPFR_RNDN); };
        if (mpfr_get_si(r9956, MPFR_RNDN)) { mpfr_set(r9972, r9960, MPFR_RNDN); } else { mpfr_set(r9972, r9971, MPFR_RNDN); };
        if (mpfr_get_si(r9949, MPFR_RNDN)) { mpfr_set(r9973, r9954, MPFR_RNDN); } else { mpfr_set(r9973, r9972, MPFR_RNDN); };
        if (mpfr_get_si(r9940, MPFR_RNDN)) { mpfr_set(r9974, r9947, MPFR_RNDN); } else { mpfr_set(r9974, r9973, MPFR_RNDN); };
        return mpfr_get_d(r9974, MPFR_RNDN);
}

static mpfr_t r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982, r9983, r9984, r9985, r9986, r9987, r9988, r9989, r9990, r9991, r9992, r9993, r9994, r9995, r9996, r9997, r9998, r9999, r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009, r10010, r10011, r10012, r10013;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9975);
        mpfr_init(r9976);
        mpfr_init(r9977);
        mpfr_init_set_str(r9978, "-1.114378691831571e+295", 10, MPFR_RNDN);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
        mpfr_init(r9983);
        mpfr_init(r9984);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init_set_str(r9987, "-2.9812881782882438e-288", 10, MPFR_RNDN);
        mpfr_init(r9988);
        mpfr_init_set_str(r9989, "1", 10, MPFR_RNDN);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init(r9992);
        mpfr_init(r9993);
        mpfr_init_set_str(r9994, "3.5883047723267483e-298", 10, MPFR_RNDN);
        mpfr_init(r9995);
        mpfr_init(r9996);
        mpfr_init(r9997);
        mpfr_init(r9998);
        mpfr_init(r9999);
        mpfr_init_set_str(r10000, "3.511639093455415e+256", 10, MPFR_RNDN);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init(r10008);
        mpfr_init(r10009);
        mpfr_init(r10010);
        mpfr_init(r10011);
        mpfr_init(r10012);
        mpfr_init(r10013);
}

double f_dm(double c0, double A, double V, double l) {
        mpfr_set_d(r9975, A, MPFR_RNDN);
        mpfr_set_d(r9976, V, MPFR_RNDN);
        mpfr_div(r9977, r9975, r9976, MPFR_RNDN);
        ;
        mpfr_set_si(r9979, mpfr_cmp(r9977, r9978) <= 0, MPFR_RNDN);
        mpfr_set_d(r9980, c0, MPFR_RNDN);
        mpfr_set_d(r9981, l, MPFR_RNDN);
        mpfr_div(r9982, r9975, r9981, MPFR_RNDN);
        mpfr_sqrt(r9983, r9982, MPFR_RNDN);
        mpfr_sqrt(r9984, r9976, MPFR_RNDN);
        mpfr_div(r9985, r9983, r9984, MPFR_RNDN);
        mpfr_mul(r9986, r9980, r9985, MPFR_RNDN);
        ;
        mpfr_set_si(r9988, mpfr_cmp(r9977, r9987) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9990, r9989, r9981, MPFR_RNDN);
        mpfr_mul(r9991, r9990, r9977, MPFR_RNDN);
        mpfr_sqrt(r9992, r9991, MPFR_RNDN);
        mpfr_mul(r9993, r9980, r9992, MPFR_RNDN);
        ;
        mpfr_set_si(r9995, mpfr_cmp(r9977, r9994) <= 0, MPFR_RNDN);
        mpfr_mul(r9996, r9981, r9976, MPFR_RNDN);
        mpfr_div(r9997, r9975, r9996, MPFR_RNDN);
        mpfr_sqrt(r9998, r9997, MPFR_RNDN);
        mpfr_mul(r9999, r9998, r9980, MPFR_RNDN);
        ;
        mpfr_set_si(r10001, mpfr_cmp(r9977, r10000) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10002, r9977, MPFR_RNDN);
        mpfr_sqrt(r10003, r9981, MPFR_RNDN);
        mpfr_div(r10004, r10002, r10003, MPFR_RNDN);
        mpfr_mul(r10005, r9980, r10004, MPFR_RNDN);
        mpfr_sqrt(r10006, r9975, MPFR_RNDN);
        mpfr_mul(r10007, r9980, r10006, MPFR_RNDN);
        mpfr_sqrt(r10008, r9996, MPFR_RNDN);
        mpfr_div(r10009, r10007, r10008, MPFR_RNDN);
        if (mpfr_get_si(r10001, MPFR_RNDN)) { mpfr_set(r10010, r10005, MPFR_RNDN); } else { mpfr_set(r10010, r10009, MPFR_RNDN); };
        if (mpfr_get_si(r9995, MPFR_RNDN)) { mpfr_set(r10011, r9999, MPFR_RNDN); } else { mpfr_set(r10011, r10010, MPFR_RNDN); };
        if (mpfr_get_si(r9988, MPFR_RNDN)) { mpfr_set(r10012, r9993, MPFR_RNDN); } else { mpfr_set(r10012, r10011, MPFR_RNDN); };
        if (mpfr_get_si(r9979, MPFR_RNDN)) { mpfr_set(r10013, r9986, MPFR_RNDN); } else { mpfr_set(r10013, r10012, MPFR_RNDN); };
        return mpfr_get_d(r10013, MPFR_RNDN);
}

