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

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

double f_if(float w0, float M, float D, float h, float l, float d) {
        float r25770 = w0;
        float r25771 = 1;
        float r25772 = M;
        float r25773 = D;
        float r25774 = r25772 * r25773;
        float r25775 = 2;
        float r25776 = d;
        float r25777 = r25775 * r25776;
        float r25778 = r25774 / r25777;
        float r25779 = pow(r25778, r25775);
        float r25780 = h;
        float r25781 = l;
        float r25782 = r25780 / r25781;
        float r25783 = r25779 * r25782;
        float r25784 = r25771 - r25783;
        float r25785 = sqrt(r25784);
        float r25786 = r25770 * r25785;
        return r25786;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r25787 = w0;
        double r25788 = 1;
        double r25789 = M;
        double r25790 = D;
        double r25791 = r25789 * r25790;
        double r25792 = 2;
        double r25793 = d;
        double r25794 = r25792 * r25793;
        double r25795 = r25791 / r25794;
        double r25796 = pow(r25795, r25792);
        double r25797 = h;
        double r25798 = l;
        double r25799 = r25797 / r25798;
        double r25800 = r25796 * r25799;
        double r25801 = r25788 - r25800;
        double r25802 = sqrt(r25801);
        double r25803 = r25787 * r25802;
        return r25803;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r25804 = 1;
        float r25805 = M;
        float r25806 = D;
        float r25807 = r25805 * r25806;
        float r25808 = 2;
        float r25809 = d;
        float r25810 = r25808 * r25809;
        float r25811 = r25807 / r25810;
        float r25812 = h;
        float r25813 = r25811 * r25812;
        float r25814 = r25811 * r25813;
        float r25815 = l;
        float r25816 = r25814 / r25815;
        float r25817 = r25804 - r25816;
        float r25818 = sqrt(r25817);
        float r25819 = 5.004789900403707e+142;
        bool r25820 = r25818 <= r25819;
        float r25821 = w0;
        float r25822 = r25821 * r25818;
        float r25823 = r25805 / r25809;
        float r25824 = r25812 * r25806;
        float r25825 = 1/2;
        float r25826 = r25824 * r25825;
        float r25827 = r25823 * r25826;
        float r25828 = r25806 / r25808;
        float r25829 = r25828 * r25823;
        float r25830 = r25829 / r25815;
        float r25831 = r25827 * r25830;
        float r25832 = r25804 - r25831;
        float r25833 = sqrt(r25832);
        float r25834 = r25833 * r25821;
        float r25835 = r25820 ? r25822 : r25834;
        return r25835;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r25836 = 1;
        double r25837 = M;
        double r25838 = D;
        double r25839 = r25837 * r25838;
        double r25840 = 2;
        double r25841 = d;
        double r25842 = r25840 * r25841;
        double r25843 = r25839 / r25842;
        double r25844 = h;
        double r25845 = r25843 * r25844;
        double r25846 = r25843 * r25845;
        double r25847 = l;
        double r25848 = r25846 / r25847;
        double r25849 = r25836 - r25848;
        double r25850 = sqrt(r25849);
        double r25851 = 5.004789900403707e+142;
        bool r25852 = r25850 <= r25851;
        double r25853 = w0;
        double r25854 = r25853 * r25850;
        double r25855 = r25837 / r25841;
        double r25856 = r25844 * r25838;
        double r25857 = 1/2;
        double r25858 = r25856 * r25857;
        double r25859 = r25855 * r25858;
        double r25860 = r25838 / r25840;
        double r25861 = r25860 * r25855;
        double r25862 = r25861 / r25847;
        double r25863 = r25859 * r25862;
        double r25864 = r25836 - r25863;
        double r25865 = sqrt(r25864);
        double r25866 = r25865 * r25853;
        double r25867 = r25852 ? r25854 : r25866;
        return r25867;
}

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 r25868, r25869, r25870, r25871, r25872, r25873, r25874, r25875, r25876, r25877, r25878, r25879, r25880, r25881, r25882, r25883, r25884;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r25868);
        mpfr_init_set_str(r25869, "1", 10, MPFR_RNDN);
        mpfr_init(r25870);
        mpfr_init(r25871);
        mpfr_init(r25872);
        mpfr_init_set_str(r25873, "2", 10, MPFR_RNDN);
        mpfr_init(r25874);
        mpfr_init(r25875);
        mpfr_init(r25876);
        mpfr_init(r25877);
        mpfr_init(r25878);
        mpfr_init(r25879);
        mpfr_init(r25880);
        mpfr_init(r25881);
        mpfr_init(r25882);
        mpfr_init(r25883);
        mpfr_init(r25884);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r25868, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r25870, M, MPFR_RNDN);
        mpfr_set_d(r25871, D, MPFR_RNDN);
        mpfr_mul(r25872, r25870, r25871, MPFR_RNDN);
        ;
        mpfr_set_d(r25874, d, MPFR_RNDN);
        mpfr_mul(r25875, r25873, r25874, MPFR_RNDN);
        mpfr_div(r25876, r25872, r25875, MPFR_RNDN);
        mpfr_pow(r25877, r25876, r25873, MPFR_RNDN);
        mpfr_set_d(r25878, h, MPFR_RNDN);
        mpfr_set_d(r25879, l, MPFR_RNDN);
        mpfr_div(r25880, r25878, r25879, MPFR_RNDN);
        mpfr_mul(r25881, r25877, r25880, MPFR_RNDN);
        mpfr_sub(r25882, r25869, r25881, MPFR_RNDN);
        mpfr_sqrt(r25883, r25882, MPFR_RNDN);
        mpfr_mul(r25884, r25868, r25883, MPFR_RNDN);
        return mpfr_get_d(r25884, MPFR_RNDN);
}

static mpfr_t r25885, r25886, r25887, r25888, r25889, r25890, r25891, r25892, r25893, r25894, r25895, r25896, r25897, r25898, r25899, r25900, r25901, r25902, r25903, r25904, r25905, r25906, r25907, r25908, r25909, r25910, r25911, r25912, r25913, r25914, r25915, r25916;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25885, "1", 10, MPFR_RNDN);
        mpfr_init(r25886);
        mpfr_init(r25887);
        mpfr_init(r25888);
        mpfr_init_set_str(r25889, "2", 10, MPFR_RNDN);
        mpfr_init(r25890);
        mpfr_init(r25891);
        mpfr_init(r25892);
        mpfr_init(r25893);
        mpfr_init(r25894);
        mpfr_init(r25895);
        mpfr_init(r25896);
        mpfr_init(r25897);
        mpfr_init(r25898);
        mpfr_init(r25899);
        mpfr_init_set_str(r25900, "5.004789900403707e+142", 10, MPFR_RNDN);
        mpfr_init(r25901);
        mpfr_init(r25902);
        mpfr_init(r25903);
        mpfr_init(r25904);
        mpfr_init(r25905);
        mpfr_init_set_str(r25906, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25907);
        mpfr_init(r25908);
        mpfr_init(r25909);
        mpfr_init(r25910);
        mpfr_init(r25911);
        mpfr_init(r25912);
        mpfr_init(r25913);
        mpfr_init(r25914);
        mpfr_init(r25915);
        mpfr_init(r25916);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        ;
        mpfr_set_d(r25886, M, MPFR_RNDN);
        mpfr_set_d(r25887, D, MPFR_RNDN);
        mpfr_mul(r25888, r25886, r25887, MPFR_RNDN);
        ;
        mpfr_set_d(r25890, d, MPFR_RNDN);
        mpfr_mul(r25891, r25889, r25890, MPFR_RNDN);
        mpfr_div(r25892, r25888, r25891, MPFR_RNDN);
        mpfr_set_d(r25893, h, MPFR_RNDN);
        mpfr_mul(r25894, r25892, r25893, MPFR_RNDN);
        mpfr_mul(r25895, r25892, r25894, MPFR_RNDN);
        mpfr_set_d(r25896, l, MPFR_RNDN);
        mpfr_div(r25897, r25895, r25896, MPFR_RNDN);
        mpfr_sub(r25898, r25885, r25897, MPFR_RNDN);
        mpfr_sqrt(r25899, r25898, MPFR_RNDN);
        ;
        mpfr_set_si(r25901, mpfr_cmp(r25899, r25900) <= 0, MPFR_RNDN);
        mpfr_set_d(r25902, w0, MPFR_RNDN);
        mpfr_mul(r25903, r25902, r25899, MPFR_RNDN);
        mpfr_div(r25904, r25886, r25890, MPFR_RNDN);
        mpfr_mul(r25905, r25893, r25887, MPFR_RNDN);
        ;
        mpfr_mul(r25907, r25905, r25906, MPFR_RNDN);
        mpfr_mul(r25908, r25904, r25907, MPFR_RNDN);
        mpfr_div(r25909, r25887, r25889, MPFR_RNDN);
        mpfr_mul(r25910, r25909, r25904, MPFR_RNDN);
        mpfr_div(r25911, r25910, r25896, MPFR_RNDN);
        mpfr_mul(r25912, r25908, r25911, MPFR_RNDN);
        mpfr_sub(r25913, r25885, r25912, MPFR_RNDN);
        mpfr_sqrt(r25914, r25913, MPFR_RNDN);
        mpfr_mul(r25915, r25914, r25902, MPFR_RNDN);
        if (mpfr_get_si(r25901, MPFR_RNDN)) { mpfr_set(r25916, r25903, MPFR_RNDN); } else { mpfr_set(r25916, r25915, MPFR_RNDN); };
        return mpfr_get_d(r25916, MPFR_RNDN);
}

static mpfr_t r25917, r25918, r25919, r25920, r25921, r25922, r25923, r25924, r25925, r25926, r25927, r25928, r25929, r25930, r25931, r25932, r25933, r25934, r25935, r25936, r25937, r25938, r25939, r25940, r25941, r25942, r25943, r25944, r25945, r25946, r25947, r25948;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25917, "1", 10, MPFR_RNDN);
        mpfr_init(r25918);
        mpfr_init(r25919);
        mpfr_init(r25920);
        mpfr_init_set_str(r25921, "2", 10, MPFR_RNDN);
        mpfr_init(r25922);
        mpfr_init(r25923);
        mpfr_init(r25924);
        mpfr_init(r25925);
        mpfr_init(r25926);
        mpfr_init(r25927);
        mpfr_init(r25928);
        mpfr_init(r25929);
        mpfr_init(r25930);
        mpfr_init(r25931);
        mpfr_init_set_str(r25932, "5.004789900403707e+142", 10, MPFR_RNDN);
        mpfr_init(r25933);
        mpfr_init(r25934);
        mpfr_init(r25935);
        mpfr_init(r25936);
        mpfr_init(r25937);
        mpfr_init_set_str(r25938, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25939);
        mpfr_init(r25940);
        mpfr_init(r25941);
        mpfr_init(r25942);
        mpfr_init(r25943);
        mpfr_init(r25944);
        mpfr_init(r25945);
        mpfr_init(r25946);
        mpfr_init(r25947);
        mpfr_init(r25948);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        ;
        mpfr_set_d(r25918, M, MPFR_RNDN);
        mpfr_set_d(r25919, D, MPFR_RNDN);
        mpfr_mul(r25920, r25918, r25919, MPFR_RNDN);
        ;
        mpfr_set_d(r25922, d, MPFR_RNDN);
        mpfr_mul(r25923, r25921, r25922, MPFR_RNDN);
        mpfr_div(r25924, r25920, r25923, MPFR_RNDN);
        mpfr_set_d(r25925, h, MPFR_RNDN);
        mpfr_mul(r25926, r25924, r25925, MPFR_RNDN);
        mpfr_mul(r25927, r25924, r25926, MPFR_RNDN);
        mpfr_set_d(r25928, l, MPFR_RNDN);
        mpfr_div(r25929, r25927, r25928, MPFR_RNDN);
        mpfr_sub(r25930, r25917, r25929, MPFR_RNDN);
        mpfr_sqrt(r25931, r25930, MPFR_RNDN);
        ;
        mpfr_set_si(r25933, mpfr_cmp(r25931, r25932) <= 0, MPFR_RNDN);
        mpfr_set_d(r25934, w0, MPFR_RNDN);
        mpfr_mul(r25935, r25934, r25931, MPFR_RNDN);
        mpfr_div(r25936, r25918, r25922, MPFR_RNDN);
        mpfr_mul(r25937, r25925, r25919, MPFR_RNDN);
        ;
        mpfr_mul(r25939, r25937, r25938, MPFR_RNDN);
        mpfr_mul(r25940, r25936, r25939, MPFR_RNDN);
        mpfr_div(r25941, r25919, r25921, MPFR_RNDN);
        mpfr_mul(r25942, r25941, r25936, MPFR_RNDN);
        mpfr_div(r25943, r25942, r25928, MPFR_RNDN);
        mpfr_mul(r25944, r25940, r25943, MPFR_RNDN);
        mpfr_sub(r25945, r25917, r25944, MPFR_RNDN);
        mpfr_sqrt(r25946, r25945, MPFR_RNDN);
        mpfr_mul(r25947, r25946, r25934, MPFR_RNDN);
        if (mpfr_get_si(r25933, MPFR_RNDN)) { mpfr_set(r25948, r25935, MPFR_RNDN); } else { mpfr_set(r25948, r25947, MPFR_RNDN); };
        return mpfr_get_d(r25948, MPFR_RNDN);
}

