#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 r9835 = c0;
        float r9836 = A;
        float r9837 = V;
        float r9838 = l;
        float r9839 = r9837 * r9838;
        float r9840 = r9836 / r9839;
        float r9841 = sqrt(r9840);
        float r9842 = r9835 * r9841;
        return r9842;
}

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


double f_of(float c0, float A, float V, float l) {
        float r9851 = l;
        float r9852 = V;
        float r9853 = r9851 * r9852;
        float r9854 = -1.4465936640347471e+295;
        bool r9855 = r9853 <= r9854;
        float r9856 = A;
        float r9857 = r9856 / r9852;
        float r9858 = r9857 / r9851;
        float r9859 = sqrt(r9858);
        float r9860 = c0;
        float r9861 = r9859 * r9860;
        float r9862 = -1.7850903931179766e-56;
        bool r9863 = r9853 <= r9862;
        float r9864 = r9856 / r9853;
        float r9865 = sqrt(r9864);
        float r9866 = sqrt(r9865);
        float r9867 = r9866 * r9866;
        float r9868 = r9867 * r9860;
        float r9869 = 1.2845706791872e-322;
        bool r9870 = r9853 <= r9869;
        float r9871 = 1.7811482673865394e+308;
        bool r9872 = r9853 <= r9871;
        float r9873 = !r9872;
        bool r9874 = r9870 || r9873;
        float r9875 = sqrt(r9856);
        float r9876 = sqrt(r9853);
        float r9877 = r9875 / r9876;
        float r9878 = r9860 * r9877;
        float r9879 = r9874 ? r9861 : r9878;
        float r9880 = r9863 ? r9868 : r9879;
        float r9881 = r9855 ? r9861 : r9880;
        return r9881;
}

double f_od(double c0, double A, double V, double l) {
        double r9882 = l;
        double r9883 = V;
        double r9884 = r9882 * r9883;
        double r9885 = -1.4465936640347471e+295;
        bool r9886 = r9884 <= r9885;
        double r9887 = A;
        double r9888 = r9887 / r9883;
        double r9889 = r9888 / r9882;
        double r9890 = sqrt(r9889);
        double r9891 = c0;
        double r9892 = r9890 * r9891;
        double r9893 = -1.7850903931179766e-56;
        bool r9894 = r9884 <= r9893;
        double r9895 = r9887 / r9884;
        double r9896 = sqrt(r9895);
        double r9897 = sqrt(r9896);
        double r9898 = r9897 * r9897;
        double r9899 = r9898 * r9891;
        double r9900 = 1.2845706791872e-322;
        bool r9901 = r9884 <= r9900;
        double r9902 = 1.7811482673865394e+308;
        bool r9903 = r9884 <= r9902;
        double r9904 = !r9903;
        bool r9905 = r9901 || r9904;
        double r9906 = sqrt(r9887);
        double r9907 = sqrt(r9884);
        double r9908 = r9906 / r9907;
        double r9909 = r9891 * r9908;
        double r9910 = r9905 ? r9892 : r9909;
        double r9911 = r9894 ? r9899 : r9910;
        double r9912 = r9886 ? r9892 : r9911;
        return r9912;
}

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 r9913, r9914, r9915, r9916, r9917, r9918, r9919, r9920;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9913);
        mpfr_init(r9914);
        mpfr_init(r9915);
        mpfr_init(r9916);
        mpfr_init(r9917);
        mpfr_init(r9918);
        mpfr_init(r9919);
        mpfr_init(r9920);
}

double f_im(double c0, double A, double V, double l) {
        mpfr_set_d(r9913, c0, MPFR_RNDN);
        mpfr_set_d(r9914, A, MPFR_RNDN);
        mpfr_set_d(r9915, V, MPFR_RNDN);
        mpfr_set_d(r9916, l, MPFR_RNDN);
        mpfr_mul(r9917, r9915, r9916, MPFR_RNDN);
        mpfr_div(r9918, r9914, r9917, MPFR_RNDN);
        mpfr_sqrt(r9919, r9918, MPFR_RNDN);
        mpfr_mul(r9920, r9913, r9919, MPFR_RNDN);
        return mpfr_get_d(r9920, MPFR_RNDN);
}

static mpfr_t r9921, r9922, r9923, r9924, r9925, r9926, r9927, r9928, r9929, r9930, r9931, r9932, r9933, r9934, r9935, r9936, r9937, r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946, r9947, r9948, r9949, r9950, r9951;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9921);
        mpfr_init(r9922);
        mpfr_init(r9923);
        mpfr_init_set_str(r9924, "-1.4465936640347471e+295", 10, MPFR_RNDN);
        mpfr_init(r9925);
        mpfr_init(r9926);
        mpfr_init(r9927);
        mpfr_init(r9928);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init(r9931);
        mpfr_init_set_str(r9932, "-1.7850903931179766e-56", 10, MPFR_RNDN);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init(r9935);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init(r9938);
        mpfr_init_set_str(r9939, "1.2845706791872e-322", 10, MPFR_RNDN);
        mpfr_init(r9940);
        mpfr_init_set_str(r9941, "1.7811482673865394e+308", 10, MPFR_RNDN);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
        mpfr_init(r9946);
        mpfr_init(r9947);
        mpfr_init(r9948);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
}

double f_fm(double c0, double A, double V, double l) {
        mpfr_set_d(r9921, l, MPFR_RNDN);
        mpfr_set_d(r9922, V, MPFR_RNDN);
        mpfr_mul(r9923, r9921, r9922, MPFR_RNDN);
        ;
        mpfr_set_si(r9925, mpfr_cmp(r9923, r9924) <= 0, MPFR_RNDN);
        mpfr_set_d(r9926, A, MPFR_RNDN);
        mpfr_div(r9927, r9926, r9922, MPFR_RNDN);
        mpfr_div(r9928, r9927, r9921, MPFR_RNDN);
        mpfr_sqrt(r9929, r9928, MPFR_RNDN);
        mpfr_set_d(r9930, c0, MPFR_RNDN);
        mpfr_mul(r9931, r9929, r9930, MPFR_RNDN);
        ;
        mpfr_set_si(r9933, mpfr_cmp(r9923, r9932) <= 0, MPFR_RNDN);
        mpfr_div(r9934, r9926, r9923, MPFR_RNDN);
        mpfr_sqrt(r9935, r9934, MPFR_RNDN);
        mpfr_sqrt(r9936, r9935, MPFR_RNDN);
        mpfr_mul(r9937, r9936, r9936, MPFR_RNDN);
        mpfr_mul(r9938, r9937, r9930, MPFR_RNDN);
        ;
        mpfr_set_si(r9940, mpfr_cmp(r9923, r9939) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9942, mpfr_cmp(r9923, r9941) <= 0, MPFR_RNDN);
        mpfr_set_si(r9943, !mpfr_get_si(r9942, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9944, mpfr_get_si(r9940, MPFR_RNDN) || mpfr_get_si(r9943, MPFR_RNDN), MPFR_RNDN);
        mpfr_sqrt(r9945, r9926, MPFR_RNDN);
        mpfr_sqrt(r9946, r9923, MPFR_RNDN);
        mpfr_div(r9947, r9945, r9946, MPFR_RNDN);
        mpfr_mul(r9948, r9930, r9947, MPFR_RNDN);
        if (mpfr_get_si(r9944, MPFR_RNDN)) { mpfr_set(r9949, r9931, MPFR_RNDN); } else { mpfr_set(r9949, r9948, MPFR_RNDN); };
        if (mpfr_get_si(r9933, MPFR_RNDN)) { mpfr_set(r9950, r9938, MPFR_RNDN); } else { mpfr_set(r9950, r9949, MPFR_RNDN); };
        if (mpfr_get_si(r9925, MPFR_RNDN)) { mpfr_set(r9951, r9931, MPFR_RNDN); } else { mpfr_set(r9951, r9950, MPFR_RNDN); };
        return mpfr_get_d(r9951, MPFR_RNDN);
}

static mpfr_t r9952, r9953, r9954, r9955, r9956, r9957, r9958, r9959, r9960, r9961, r9962, r9963, r9964, r9965, r9966, r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974, r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init_set_str(r9955, "-1.4465936640347471e+295", 10, MPFR_RNDN);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init_set_str(r9963, "-1.7850903931179766e-56", 10, MPFR_RNDN);
        mpfr_init(r9964);
        mpfr_init(r9965);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init_set_str(r9970, "1.2845706791872e-322", 10, MPFR_RNDN);
        mpfr_init(r9971);
        mpfr_init_set_str(r9972, "1.7811482673865394e+308", 10, MPFR_RNDN);
        mpfr_init(r9973);
        mpfr_init(r9974);
        mpfr_init(r9975);
        mpfr_init(r9976);
        mpfr_init(r9977);
        mpfr_init(r9978);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
}

double f_dm(double c0, double A, double V, double l) {
        mpfr_set_d(r9952, l, MPFR_RNDN);
        mpfr_set_d(r9953, V, MPFR_RNDN);
        mpfr_mul(r9954, r9952, r9953, MPFR_RNDN);
        ;
        mpfr_set_si(r9956, mpfr_cmp(r9954, r9955) <= 0, MPFR_RNDN);
        mpfr_set_d(r9957, A, MPFR_RNDN);
        mpfr_div(r9958, r9957, r9953, MPFR_RNDN);
        mpfr_div(r9959, r9958, r9952, MPFR_RNDN);
        mpfr_sqrt(r9960, r9959, MPFR_RNDN);
        mpfr_set_d(r9961, c0, MPFR_RNDN);
        mpfr_mul(r9962, r9960, r9961, MPFR_RNDN);
        ;
        mpfr_set_si(r9964, mpfr_cmp(r9954, r9963) <= 0, MPFR_RNDN);
        mpfr_div(r9965, r9957, r9954, MPFR_RNDN);
        mpfr_sqrt(r9966, r9965, MPFR_RNDN);
        mpfr_sqrt(r9967, r9966, MPFR_RNDN);
        mpfr_mul(r9968, r9967, r9967, MPFR_RNDN);
        mpfr_mul(r9969, r9968, r9961, MPFR_RNDN);
        ;
        mpfr_set_si(r9971, mpfr_cmp(r9954, r9970) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9973, mpfr_cmp(r9954, r9972) <= 0, MPFR_RNDN);
        mpfr_set_si(r9974, !mpfr_get_si(r9973, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9975, mpfr_get_si(r9971, MPFR_RNDN) || mpfr_get_si(r9974, MPFR_RNDN), MPFR_RNDN);
        mpfr_sqrt(r9976, r9957, MPFR_RNDN);
        mpfr_sqrt(r9977, r9954, MPFR_RNDN);
        mpfr_div(r9978, r9976, r9977, MPFR_RNDN);
        mpfr_mul(r9979, r9961, r9978, MPFR_RNDN);
        if (mpfr_get_si(r9975, MPFR_RNDN)) { mpfr_set(r9980, r9962, MPFR_RNDN); } else { mpfr_set(r9980, r9979, MPFR_RNDN); };
        if (mpfr_get_si(r9964, MPFR_RNDN)) { mpfr_set(r9981, r9969, MPFR_RNDN); } else { mpfr_set(r9981, r9980, MPFR_RNDN); };
        if (mpfr_get_si(r9956, MPFR_RNDN)) { mpfr_set(r9982, r9962, MPFR_RNDN); } else { mpfr_set(r9982, r9981, MPFR_RNDN); };
        return mpfr_get_d(r9982, MPFR_RNDN);
}

