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

char *name = "Harley's example";

double f_if(float c_p, float c_n, float t, float s) {
        float r27701 = 1;
        float r27702 = s;
        float r27703 = -r27702;
        float r27704 = exp(r27703);
        float r27705 = r27701 + r27704;
        float r27706 = r27701 / r27705;
        float r27707 = c_p;
        float r27708 = pow(r27706, r27707);
        float r27709 = r27701 - r27706;
        float r27710 = c_n;
        float r27711 = pow(r27709, r27710);
        float r27712 = r27708 * r27711;
        float r27713 = t;
        float r27714 = -r27713;
        float r27715 = exp(r27714);
        float r27716 = r27701 + r27715;
        float r27717 = r27701 / r27716;
        float r27718 = pow(r27717, r27707);
        float r27719 = r27701 - r27717;
        float r27720 = pow(r27719, r27710);
        float r27721 = r27718 * r27720;
        float r27722 = r27712 / r27721;
        return r27722;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27723 = 1;
        double r27724 = s;
        double r27725 = -r27724;
        double r27726 = exp(r27725);
        double r27727 = r27723 + r27726;
        double r27728 = r27723 / r27727;
        double r27729 = c_p;
        double r27730 = pow(r27728, r27729);
        double r27731 = r27723 - r27728;
        double r27732 = c_n;
        double r27733 = pow(r27731, r27732);
        double r27734 = r27730 * r27733;
        double r27735 = t;
        double r27736 = -r27735;
        double r27737 = exp(r27736);
        double r27738 = r27723 + r27737;
        double r27739 = r27723 / r27738;
        double r27740 = pow(r27739, r27729);
        double r27741 = r27723 - r27739;
        double r27742 = pow(r27741, r27732);
        double r27743 = r27740 * r27742;
        double r27744 = r27734 / r27743;
        return r27744;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27745 = 1;
        float r27746 = s;
        float r27747 = -r27746;
        float r27748 = exp(r27747);
        float r27749 = r27745 + r27748;
        float r27750 = r27745 / r27749;
        float r27751 = r27745 - r27750;
        float r27752 = sqrt(r27751);
        float r27753 = log(r27752);
        float r27754 = 3;
        float r27755 = pow(r27745, r27754);
        float r27756 = pow(r27755, r27754);
        float r27757 = t;
        float r27758 = -r27757;
        float r27759 = exp(r27758);
        float r27760 = r27759 + r27745;
        float r27761 = r27745 / r27760;
        float r27762 = pow(r27761, r27754);
        float r27763 = pow(r27762, r27754);
        float r27764 = r27756 - r27763;
        float r27765 = log(r27764);
        float r27766 = r27753 - r27765;
        float r27767 = r27761 * r27761;
        float r27768 = r27761 + r27745;
        float r27769 = r27767 + r27768;
        float r27770 = log(r27769);
        float r27771 = r27754 + r27745;
        float r27772 = r27771 + r27745;
        float r27773 = pow(r27760, r27772);
        float r27774 = r27761 / r27773;
        float r27775 = r27760 * r27760;
        float r27776 = r27761 / r27775;
        float r27777 = r27776 + r27745;
        float r27778 = r27774 + r27777;
        float r27779 = log(r27778);
        float r27780 = r27770 + r27779;
        float r27781 = r27766 + r27780;
        float r27782 = r27753 + r27781;
        float r27783 = c_n;
        float r27784 = r27782 * r27783;
        float r27785 = log(r27749);
        float r27786 = log(r27760);
        float r27787 = r27785 - r27786;
        float r27788 = c_p;
        float r27789 = r27787 * r27788;
        float r27790 = r27784 - r27789;
        float r27791 = exp(r27790);
        return r27791;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27792 = 1;
        double r27793 = s;
        double r27794 = -r27793;
        double r27795 = exp(r27794);
        double r27796 = r27792 + r27795;
        double r27797 = r27792 / r27796;
        double r27798 = r27792 - r27797;
        double r27799 = sqrt(r27798);
        double r27800 = log(r27799);
        double r27801 = 3;
        double r27802 = pow(r27792, r27801);
        double r27803 = pow(r27802, r27801);
        double r27804 = t;
        double r27805 = -r27804;
        double r27806 = exp(r27805);
        double r27807 = r27806 + r27792;
        double r27808 = r27792 / r27807;
        double r27809 = pow(r27808, r27801);
        double r27810 = pow(r27809, r27801);
        double r27811 = r27803 - r27810;
        double r27812 = log(r27811);
        double r27813 = r27800 - r27812;
        double r27814 = r27808 * r27808;
        double r27815 = r27808 + r27792;
        double r27816 = r27814 + r27815;
        double r27817 = log(r27816);
        double r27818 = r27801 + r27792;
        double r27819 = r27818 + r27792;
        double r27820 = pow(r27807, r27819);
        double r27821 = r27808 / r27820;
        double r27822 = r27807 * r27807;
        double r27823 = r27808 / r27822;
        double r27824 = r27823 + r27792;
        double r27825 = r27821 + r27824;
        double r27826 = log(r27825);
        double r27827 = r27817 + r27826;
        double r27828 = r27813 + r27827;
        double r27829 = r27800 + r27828;
        double r27830 = c_n;
        double r27831 = r27829 * r27830;
        double r27832 = log(r27796);
        double r27833 = log(r27807);
        double r27834 = r27832 - r27833;
        double r27835 = c_p;
        double r27836 = r27834 * r27835;
        double r27837 = r27831 - r27836;
        double r27838 = exp(r27837);
        return r27838;
}

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 r27839, r27840, r27841, r27842, r27843, r27844, r27845, r27846, r27847, r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856, r27857, r27858, r27859, r27860;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r27839, "1", 10, MPFR_RNDN);
        mpfr_init(r27840);
        mpfr_init(r27841);
        mpfr_init(r27842);
        mpfr_init(r27843);
        mpfr_init(r27844);
        mpfr_init(r27845);
        mpfr_init(r27846);
        mpfr_init(r27847);
        mpfr_init(r27848);
        mpfr_init(r27849);
        mpfr_init(r27850);
        mpfr_init(r27851);
        mpfr_init(r27852);
        mpfr_init(r27853);
        mpfr_init(r27854);
        mpfr_init(r27855);
        mpfr_init(r27856);
        mpfr_init(r27857);
        mpfr_init(r27858);
        mpfr_init(r27859);
        mpfr_init(r27860);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27840, s, MPFR_RNDN);
        mpfr_neg(r27841, r27840, MPFR_RNDN);
        mpfr_exp(r27842, r27841, MPFR_RNDN);
        mpfr_add(r27843, r27839, r27842, MPFR_RNDN);
        mpfr_div(r27844, r27839, r27843, MPFR_RNDN);
        mpfr_set_d(r27845, c_p, MPFR_RNDN);
        mpfr_pow(r27846, r27844, r27845, MPFR_RNDN);
        mpfr_sub(r27847, r27839, r27844, MPFR_RNDN);
        mpfr_set_d(r27848, c_n, MPFR_RNDN);
        mpfr_pow(r27849, r27847, r27848, MPFR_RNDN);
        mpfr_mul(r27850, r27846, r27849, MPFR_RNDN);
        mpfr_set_d(r27851, t, MPFR_RNDN);
        mpfr_neg(r27852, r27851, MPFR_RNDN);
        mpfr_exp(r27853, r27852, MPFR_RNDN);
        mpfr_add(r27854, r27839, r27853, MPFR_RNDN);
        mpfr_div(r27855, r27839, r27854, MPFR_RNDN);
        mpfr_pow(r27856, r27855, r27845, MPFR_RNDN);
        mpfr_sub(r27857, r27839, r27855, MPFR_RNDN);
        mpfr_pow(r27858, r27857, r27848, MPFR_RNDN);
        mpfr_mul(r27859, r27856, r27858, MPFR_RNDN);
        mpfr_div(r27860, r27850, r27859, MPFR_RNDN);
        return mpfr_get_d(r27860, MPFR_RNDN);
}

static mpfr_t r27861, r27862, r27863, r27864, r27865, r27866, r27867, r27868, r27869, r27870, r27871, r27872, r27873, r27874, r27875, r27876, r27877, r27878, r27879, r27880, r27881, r27882, r27883, r27884, r27885, r27886, r27887, r27888, r27889, r27890, r27891, r27892, r27893, r27894, r27895, r27896, r27897, r27898, r27899, r27900, r27901, r27902, r27903, r27904, r27905, r27906, r27907;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r27861, "1", 10, MPFR_RNDN);
        mpfr_init(r27862);
        mpfr_init(r27863);
        mpfr_init(r27864);
        mpfr_init(r27865);
        mpfr_init(r27866);
        mpfr_init(r27867);
        mpfr_init(r27868);
        mpfr_init(r27869);
        mpfr_init_set_str(r27870, "3", 10, MPFR_RNDN);
        mpfr_init(r27871);
        mpfr_init(r27872);
        mpfr_init(r27873);
        mpfr_init(r27874);
        mpfr_init(r27875);
        mpfr_init(r27876);
        mpfr_init(r27877);
        mpfr_init(r27878);
        mpfr_init(r27879);
        mpfr_init(r27880);
        mpfr_init(r27881);
        mpfr_init(r27882);
        mpfr_init(r27883);
        mpfr_init(r27884);
        mpfr_init(r27885);
        mpfr_init(r27886);
        mpfr_init(r27887);
        mpfr_init(r27888);
        mpfr_init(r27889);
        mpfr_init(r27890);
        mpfr_init(r27891);
        mpfr_init(r27892);
        mpfr_init(r27893);
        mpfr_init(r27894);
        mpfr_init(r27895);
        mpfr_init(r27896);
        mpfr_init(r27897);
        mpfr_init(r27898);
        mpfr_init(r27899);
        mpfr_init(r27900);
        mpfr_init(r27901);
        mpfr_init(r27902);
        mpfr_init(r27903);
        mpfr_init(r27904);
        mpfr_init(r27905);
        mpfr_init(r27906);
        mpfr_init(r27907);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27862, s, MPFR_RNDN);
        mpfr_neg(r27863, r27862, MPFR_RNDN);
        mpfr_exp(r27864, r27863, MPFR_RNDN);
        mpfr_add(r27865, r27861, r27864, MPFR_RNDN);
        mpfr_div(r27866, r27861, r27865, MPFR_RNDN);
        mpfr_sub(r27867, r27861, r27866, MPFR_RNDN);
        mpfr_sqrt(r27868, r27867, MPFR_RNDN);
        mpfr_log(r27869, r27868, MPFR_RNDN);
        ;
        mpfr_pow(r27871, r27861, r27870, MPFR_RNDN);
        mpfr_pow(r27872, r27871, r27870, MPFR_RNDN);
        mpfr_set_d(r27873, t, MPFR_RNDN);
        mpfr_neg(r27874, r27873, MPFR_RNDN);
        mpfr_exp(r27875, r27874, MPFR_RNDN);
        mpfr_add(r27876, r27875, r27861, MPFR_RNDN);
        mpfr_div(r27877, r27861, r27876, MPFR_RNDN);
        mpfr_pow(r27878, r27877, r27870, MPFR_RNDN);
        mpfr_pow(r27879, r27878, r27870, MPFR_RNDN);
        mpfr_sub(r27880, r27872, r27879, MPFR_RNDN);
        mpfr_log(r27881, r27880, MPFR_RNDN);
        mpfr_sub(r27882, r27869, r27881, MPFR_RNDN);
        mpfr_mul(r27883, r27877, r27877, MPFR_RNDN);
        mpfr_add(r27884, r27877, r27861, MPFR_RNDN);
        mpfr_add(r27885, r27883, r27884, MPFR_RNDN);
        mpfr_log(r27886, r27885, MPFR_RNDN);
        mpfr_add(r27887, r27870, r27861, MPFR_RNDN);
        mpfr_add(r27888, r27887, r27861, MPFR_RNDN);
        mpfr_pow(r27889, r27876, r27888, MPFR_RNDN);
        mpfr_div(r27890, r27877, r27889, MPFR_RNDN);
        mpfr_mul(r27891, r27876, r27876, MPFR_RNDN);
        mpfr_div(r27892, r27877, r27891, MPFR_RNDN);
        mpfr_add(r27893, r27892, r27861, MPFR_RNDN);
        mpfr_add(r27894, r27890, r27893, MPFR_RNDN);
        mpfr_log(r27895, r27894, MPFR_RNDN);
        mpfr_add(r27896, r27886, r27895, MPFR_RNDN);
        mpfr_add(r27897, r27882, r27896, MPFR_RNDN);
        mpfr_add(r27898, r27869, r27897, MPFR_RNDN);
        mpfr_set_d(r27899, c_n, MPFR_RNDN);
        mpfr_mul(r27900, r27898, r27899, MPFR_RNDN);
        mpfr_log(r27901, r27865, MPFR_RNDN);
        mpfr_log(r27902, r27876, MPFR_RNDN);
        mpfr_sub(r27903, r27901, r27902, MPFR_RNDN);
        mpfr_set_d(r27904, c_p, MPFR_RNDN);
        mpfr_mul(r27905, r27903, r27904, MPFR_RNDN);
        mpfr_sub(r27906, r27900, r27905, MPFR_RNDN);
        mpfr_exp(r27907, r27906, MPFR_RNDN);
        return mpfr_get_d(r27907, MPFR_RNDN);
}

static mpfr_t r27908, r27909, r27910, r27911, r27912, r27913, r27914, r27915, r27916, r27917, r27918, r27919, r27920, r27921, r27922, r27923, r27924, r27925, r27926, r27927, r27928, r27929, r27930, r27931, r27932, r27933, r27934, r27935, r27936, r27937, r27938, r27939, r27940, r27941, r27942, r27943, r27944, r27945, r27946, r27947, r27948, r27949, r27950, r27951, r27952, r27953, r27954;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r27908, "1", 10, MPFR_RNDN);
        mpfr_init(r27909);
        mpfr_init(r27910);
        mpfr_init(r27911);
        mpfr_init(r27912);
        mpfr_init(r27913);
        mpfr_init(r27914);
        mpfr_init(r27915);
        mpfr_init(r27916);
        mpfr_init_set_str(r27917, "3", 10, MPFR_RNDN);
        mpfr_init(r27918);
        mpfr_init(r27919);
        mpfr_init(r27920);
        mpfr_init(r27921);
        mpfr_init(r27922);
        mpfr_init(r27923);
        mpfr_init(r27924);
        mpfr_init(r27925);
        mpfr_init(r27926);
        mpfr_init(r27927);
        mpfr_init(r27928);
        mpfr_init(r27929);
        mpfr_init(r27930);
        mpfr_init(r27931);
        mpfr_init(r27932);
        mpfr_init(r27933);
        mpfr_init(r27934);
        mpfr_init(r27935);
        mpfr_init(r27936);
        mpfr_init(r27937);
        mpfr_init(r27938);
        mpfr_init(r27939);
        mpfr_init(r27940);
        mpfr_init(r27941);
        mpfr_init(r27942);
        mpfr_init(r27943);
        mpfr_init(r27944);
        mpfr_init(r27945);
        mpfr_init(r27946);
        mpfr_init(r27947);
        mpfr_init(r27948);
        mpfr_init(r27949);
        mpfr_init(r27950);
        mpfr_init(r27951);
        mpfr_init(r27952);
        mpfr_init(r27953);
        mpfr_init(r27954);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27909, s, MPFR_RNDN);
        mpfr_neg(r27910, r27909, MPFR_RNDN);
        mpfr_exp(r27911, r27910, MPFR_RNDN);
        mpfr_add(r27912, r27908, r27911, MPFR_RNDN);
        mpfr_div(r27913, r27908, r27912, MPFR_RNDN);
        mpfr_sub(r27914, r27908, r27913, MPFR_RNDN);
        mpfr_sqrt(r27915, r27914, MPFR_RNDN);
        mpfr_log(r27916, r27915, MPFR_RNDN);
        ;
        mpfr_pow(r27918, r27908, r27917, MPFR_RNDN);
        mpfr_pow(r27919, r27918, r27917, MPFR_RNDN);
        mpfr_set_d(r27920, t, MPFR_RNDN);
        mpfr_neg(r27921, r27920, MPFR_RNDN);
        mpfr_exp(r27922, r27921, MPFR_RNDN);
        mpfr_add(r27923, r27922, r27908, MPFR_RNDN);
        mpfr_div(r27924, r27908, r27923, MPFR_RNDN);
        mpfr_pow(r27925, r27924, r27917, MPFR_RNDN);
        mpfr_pow(r27926, r27925, r27917, MPFR_RNDN);
        mpfr_sub(r27927, r27919, r27926, MPFR_RNDN);
        mpfr_log(r27928, r27927, MPFR_RNDN);
        mpfr_sub(r27929, r27916, r27928, MPFR_RNDN);
        mpfr_mul(r27930, r27924, r27924, MPFR_RNDN);
        mpfr_add(r27931, r27924, r27908, MPFR_RNDN);
        mpfr_add(r27932, r27930, r27931, MPFR_RNDN);
        mpfr_log(r27933, r27932, MPFR_RNDN);
        mpfr_add(r27934, r27917, r27908, MPFR_RNDN);
        mpfr_add(r27935, r27934, r27908, MPFR_RNDN);
        mpfr_pow(r27936, r27923, r27935, MPFR_RNDN);
        mpfr_div(r27937, r27924, r27936, MPFR_RNDN);
        mpfr_mul(r27938, r27923, r27923, MPFR_RNDN);
        mpfr_div(r27939, r27924, r27938, MPFR_RNDN);
        mpfr_add(r27940, r27939, r27908, MPFR_RNDN);
        mpfr_add(r27941, r27937, r27940, MPFR_RNDN);
        mpfr_log(r27942, r27941, MPFR_RNDN);
        mpfr_add(r27943, r27933, r27942, MPFR_RNDN);
        mpfr_add(r27944, r27929, r27943, MPFR_RNDN);
        mpfr_add(r27945, r27916, r27944, MPFR_RNDN);
        mpfr_set_d(r27946, c_n, MPFR_RNDN);
        mpfr_mul(r27947, r27945, r27946, MPFR_RNDN);
        mpfr_log(r27948, r27912, MPFR_RNDN);
        mpfr_log(r27949, r27923, MPFR_RNDN);
        mpfr_sub(r27950, r27948, r27949, MPFR_RNDN);
        mpfr_set_d(r27951, c_p, MPFR_RNDN);
        mpfr_mul(r27952, r27950, r27951, MPFR_RNDN);
        mpfr_sub(r27953, r27947, r27952, MPFR_RNDN);
        mpfr_exp(r27954, r27953, MPFR_RNDN);
        return mpfr_get_d(r27954, MPFR_RNDN);
}

