#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 r48646 = 1;
        float r48647 = s;
        float r48648 = -r48647;
        float r48649 = exp(r48648);
        float r48650 = r48646 + r48649;
        float r48651 = r48646 / r48650;
        float r48652 = c_p;
        float r48653 = pow(r48651, r48652);
        float r48654 = r48646 - r48651;
        float r48655 = c_n;
        float r48656 = pow(r48654, r48655);
        float r48657 = r48653 * r48656;
        float r48658 = t;
        float r48659 = -r48658;
        float r48660 = exp(r48659);
        float r48661 = r48646 + r48660;
        float r48662 = r48646 / r48661;
        float r48663 = pow(r48662, r48652);
        float r48664 = r48646 - r48662;
        float r48665 = pow(r48664, r48655);
        float r48666 = r48663 * r48665;
        float r48667 = r48657 / r48666;
        return r48667;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r48668 = 1;
        double r48669 = s;
        double r48670 = -r48669;
        double r48671 = exp(r48670);
        double r48672 = r48668 + r48671;
        double r48673 = r48668 / r48672;
        double r48674 = c_p;
        double r48675 = pow(r48673, r48674);
        double r48676 = r48668 - r48673;
        double r48677 = c_n;
        double r48678 = pow(r48676, r48677);
        double r48679 = r48675 * r48678;
        double r48680 = t;
        double r48681 = -r48680;
        double r48682 = exp(r48681);
        double r48683 = r48668 + r48682;
        double r48684 = r48668 / r48683;
        double r48685 = pow(r48684, r48674);
        double r48686 = r48668 - r48684;
        double r48687 = pow(r48686, r48677);
        double r48688 = r48685 * r48687;
        double r48689 = r48679 / r48688;
        return r48689;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r48690 = t;
        float r48691 = -734.3625061456353;
        bool r48692 = r48690 <= r48691;
        float r48693 = 1;
        float r48694 = s;
        float r48695 = -r48694;
        float r48696 = exp(r48695);
        float r48697 = r48693 + r48696;
        float r48698 = r48693 / r48697;
        float r48699 = r48693 - r48698;
        float r48700 = -r48690;
        float r48701 = exp(r48700);
        float r48702 = r48693 + r48701;
        float r48703 = r48693 / r48702;
        float r48704 = r48693 - r48703;
        float r48705 = r48699 / r48704;
        float r48706 = c_n;
        float r48707 = pow(r48705, r48706);
        float r48708 = c_p;
        float r48709 = -r48708;
        float r48710 = r48690 - r48694;
        float r48711 = 1/2;
        float r48712 = r48710 * r48711;
        float r48713 = 1/8;
        float r48714 = r48694 * r48713;
        float r48715 = r48714 * r48694;
        float r48716 = r48712 + r48715;
        float r48717 = r48709 * r48716;
        float r48718 = exp(r48717);
        float r48719 = r48707 * r48718;
        float r48720 = log(r48697);
        float r48721 = r48701 + r48693;
        float r48722 = log(r48721);
        float r48723 = r48720 - r48722;
        float r48724 = r48723 * r48709;
        float r48725 = log(r48699);
        float r48726 = r48693 / r48721;
        float r48727 = r48693 - r48726;
        float r48728 = log(r48727);
        float r48729 = r48725 - r48728;
        float r48730 = r48729 * r48706;
        float r48731 = r48724 + r48730;
        float r48732 = exp(r48731);
        float r48733 = r48692 ? r48719 : r48732;
        return r48733;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48734 = t;
        double r48735 = -734.3625061456353;
        bool r48736 = r48734 <= r48735;
        double r48737 = 1;
        double r48738 = s;
        double r48739 = -r48738;
        double r48740 = exp(r48739);
        double r48741 = r48737 + r48740;
        double r48742 = r48737 / r48741;
        double r48743 = r48737 - r48742;
        double r48744 = -r48734;
        double r48745 = exp(r48744);
        double r48746 = r48737 + r48745;
        double r48747 = r48737 / r48746;
        double r48748 = r48737 - r48747;
        double r48749 = r48743 / r48748;
        double r48750 = c_n;
        double r48751 = pow(r48749, r48750);
        double r48752 = c_p;
        double r48753 = -r48752;
        double r48754 = r48734 - r48738;
        double r48755 = 1/2;
        double r48756 = r48754 * r48755;
        double r48757 = 1/8;
        double r48758 = r48738 * r48757;
        double r48759 = r48758 * r48738;
        double r48760 = r48756 + r48759;
        double r48761 = r48753 * r48760;
        double r48762 = exp(r48761);
        double r48763 = r48751 * r48762;
        double r48764 = log(r48741);
        double r48765 = r48745 + r48737;
        double r48766 = log(r48765);
        double r48767 = r48764 - r48766;
        double r48768 = r48767 * r48753;
        double r48769 = log(r48743);
        double r48770 = r48737 / r48765;
        double r48771 = r48737 - r48770;
        double r48772 = log(r48771);
        double r48773 = r48769 - r48772;
        double r48774 = r48773 * r48750;
        double r48775 = r48768 + r48774;
        double r48776 = exp(r48775);
        double r48777 = r48736 ? r48763 : r48776;
        return r48777;
}

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 r48778, r48779, r48780, r48781, r48782, r48783, r48784, r48785, r48786, r48787, r48788, r48789, r48790, r48791, r48792, r48793, r48794, r48795, r48796, r48797, r48798, r48799;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init_set_str(r48778, "1", 10, MPFR_RNDN);
        mpfr_init(r48779);
        mpfr_init(r48780);
        mpfr_init(r48781);
        mpfr_init(r48782);
        mpfr_init(r48783);
        mpfr_init(r48784);
        mpfr_init(r48785);
        mpfr_init(r48786);
        mpfr_init(r48787);
        mpfr_init(r48788);
        mpfr_init(r48789);
        mpfr_init(r48790);
        mpfr_init(r48791);
        mpfr_init(r48792);
        mpfr_init(r48793);
        mpfr_init(r48794);
        mpfr_init(r48795);
        mpfr_init(r48796);
        mpfr_init(r48797);
        mpfr_init(r48798);
        mpfr_init(r48799);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48779, s, MPFR_RNDN);
        mpfr_neg(r48780, r48779, MPFR_RNDN);
        mpfr_exp(r48781, r48780, MPFR_RNDN);
        mpfr_add(r48782, r48778, r48781, MPFR_RNDN);
        mpfr_div(r48783, r48778, r48782, MPFR_RNDN);
        mpfr_set_d(r48784, c_p, MPFR_RNDN);
        mpfr_pow(r48785, r48783, r48784, MPFR_RNDN);
        mpfr_sub(r48786, r48778, r48783, MPFR_RNDN);
        mpfr_set_d(r48787, c_n, MPFR_RNDN);
        mpfr_pow(r48788, r48786, r48787, MPFR_RNDN);
        mpfr_mul(r48789, r48785, r48788, MPFR_RNDN);
        mpfr_set_d(r48790, t, MPFR_RNDN);
        mpfr_neg(r48791, r48790, MPFR_RNDN);
        mpfr_exp(r48792, r48791, MPFR_RNDN);
        mpfr_add(r48793, r48778, r48792, MPFR_RNDN);
        mpfr_div(r48794, r48778, r48793, MPFR_RNDN);
        mpfr_pow(r48795, r48794, r48784, MPFR_RNDN);
        mpfr_sub(r48796, r48778, r48794, MPFR_RNDN);
        mpfr_pow(r48797, r48796, r48787, MPFR_RNDN);
        mpfr_mul(r48798, r48795, r48797, MPFR_RNDN);
        mpfr_div(r48799, r48789, r48798, MPFR_RNDN);
        return mpfr_get_d(r48799, MPFR_RNDN);
}

static mpfr_t r48800, r48801, r48802, r48803, r48804, r48805, r48806, r48807, r48808, r48809, r48810, r48811, r48812, r48813, r48814, r48815, r48816, r48817, r48818, r48819, r48820, r48821, r48822, r48823, r48824, r48825, r48826, r48827, r48828, r48829, r48830, r48831, r48832, r48833, r48834, r48835, r48836, r48837, r48838, r48839, r48840, r48841, r48842, r48843;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r48800);
        mpfr_init_set_str(r48801, "-734.3625061456353", 10, MPFR_RNDN);
        mpfr_init(r48802);
        mpfr_init_set_str(r48803, "1", 10, MPFR_RNDN);
        mpfr_init(r48804);
        mpfr_init(r48805);
        mpfr_init(r48806);
        mpfr_init(r48807);
        mpfr_init(r48808);
        mpfr_init(r48809);
        mpfr_init(r48810);
        mpfr_init(r48811);
        mpfr_init(r48812);
        mpfr_init(r48813);
        mpfr_init(r48814);
        mpfr_init(r48815);
        mpfr_init(r48816);
        mpfr_init(r48817);
        mpfr_init(r48818);
        mpfr_init(r48819);
        mpfr_init(r48820);
        mpfr_init_set_str(r48821, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48822);
        mpfr_init_set_str(r48823, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48824);
        mpfr_init(r48825);
        mpfr_init(r48826);
        mpfr_init(r48827);
        mpfr_init(r48828);
        mpfr_init(r48829);
        mpfr_init(r48830);
        mpfr_init(r48831);
        mpfr_init(r48832);
        mpfr_init(r48833);
        mpfr_init(r48834);
        mpfr_init(r48835);
        mpfr_init(r48836);
        mpfr_init(r48837);
        mpfr_init(r48838);
        mpfr_init(r48839);
        mpfr_init(r48840);
        mpfr_init(r48841);
        mpfr_init(r48842);
        mpfr_init(r48843);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48800, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48802, mpfr_cmp(r48800, r48801) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48804, s, MPFR_RNDN);
        mpfr_neg(r48805, r48804, MPFR_RNDN);
        mpfr_exp(r48806, r48805, MPFR_RNDN);
        mpfr_add(r48807, r48803, r48806, MPFR_RNDN);
        mpfr_div(r48808, r48803, r48807, MPFR_RNDN);
        mpfr_sub(r48809, r48803, r48808, MPFR_RNDN);
        mpfr_neg(r48810, r48800, MPFR_RNDN);
        mpfr_exp(r48811, r48810, MPFR_RNDN);
        mpfr_add(r48812, r48803, r48811, MPFR_RNDN);
        mpfr_div(r48813, r48803, r48812, MPFR_RNDN);
        mpfr_sub(r48814, r48803, r48813, MPFR_RNDN);
        mpfr_div(r48815, r48809, r48814, MPFR_RNDN);
        mpfr_set_d(r48816, c_n, MPFR_RNDN);
        mpfr_pow(r48817, r48815, r48816, MPFR_RNDN);
        mpfr_set_d(r48818, c_p, MPFR_RNDN);
        mpfr_neg(r48819, r48818, MPFR_RNDN);
        mpfr_sub(r48820, r48800, r48804, MPFR_RNDN);
        ;
        mpfr_mul(r48822, r48820, r48821, MPFR_RNDN);
        ;
        mpfr_mul(r48824, r48804, r48823, MPFR_RNDN);
        mpfr_mul(r48825, r48824, r48804, MPFR_RNDN);
        mpfr_add(r48826, r48822, r48825, MPFR_RNDN);
        mpfr_mul(r48827, r48819, r48826, MPFR_RNDN);
        mpfr_exp(r48828, r48827, MPFR_RNDN);
        mpfr_mul(r48829, r48817, r48828, MPFR_RNDN);
        mpfr_log(r48830, r48807, MPFR_RNDN);
        mpfr_add(r48831, r48811, r48803, MPFR_RNDN);
        mpfr_log(r48832, r48831, MPFR_RNDN);
        mpfr_sub(r48833, r48830, r48832, MPFR_RNDN);
        mpfr_mul(r48834, r48833, r48819, MPFR_RNDN);
        mpfr_log(r48835, r48809, MPFR_RNDN);
        mpfr_div(r48836, r48803, r48831, MPFR_RNDN);
        mpfr_sub(r48837, r48803, r48836, MPFR_RNDN);
        mpfr_log(r48838, r48837, MPFR_RNDN);
        mpfr_sub(r48839, r48835, r48838, MPFR_RNDN);
        mpfr_mul(r48840, r48839, r48816, MPFR_RNDN);
        mpfr_add(r48841, r48834, r48840, MPFR_RNDN);
        mpfr_exp(r48842, r48841, MPFR_RNDN);
        if (mpfr_get_si(r48802, MPFR_RNDN)) { mpfr_set(r48843, r48829, MPFR_RNDN); } else { mpfr_set(r48843, r48842, MPFR_RNDN); };
        return mpfr_get_d(r48843, MPFR_RNDN);
}

static mpfr_t r48844, r48845, r48846, r48847, r48848, r48849, r48850, r48851, r48852, r48853, r48854, r48855, r48856, r48857, r48858, r48859, r48860, r48861, r48862, r48863, r48864, r48865, r48866, r48867, r48868, r48869, r48870, r48871, r48872, r48873, r48874, r48875, r48876, r48877, r48878, r48879, r48880, r48881, r48882, r48883, r48884, r48885, r48886, r48887;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r48844);
        mpfr_init_set_str(r48845, "-734.3625061456353", 10, MPFR_RNDN);
        mpfr_init(r48846);
        mpfr_init_set_str(r48847, "1", 10, MPFR_RNDN);
        mpfr_init(r48848);
        mpfr_init(r48849);
        mpfr_init(r48850);
        mpfr_init(r48851);
        mpfr_init(r48852);
        mpfr_init(r48853);
        mpfr_init(r48854);
        mpfr_init(r48855);
        mpfr_init(r48856);
        mpfr_init(r48857);
        mpfr_init(r48858);
        mpfr_init(r48859);
        mpfr_init(r48860);
        mpfr_init(r48861);
        mpfr_init(r48862);
        mpfr_init(r48863);
        mpfr_init(r48864);
        mpfr_init_set_str(r48865, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48866);
        mpfr_init_set_str(r48867, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48868);
        mpfr_init(r48869);
        mpfr_init(r48870);
        mpfr_init(r48871);
        mpfr_init(r48872);
        mpfr_init(r48873);
        mpfr_init(r48874);
        mpfr_init(r48875);
        mpfr_init(r48876);
        mpfr_init(r48877);
        mpfr_init(r48878);
        mpfr_init(r48879);
        mpfr_init(r48880);
        mpfr_init(r48881);
        mpfr_init(r48882);
        mpfr_init(r48883);
        mpfr_init(r48884);
        mpfr_init(r48885);
        mpfr_init(r48886);
        mpfr_init(r48887);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48844, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48846, mpfr_cmp(r48844, r48845) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48848, s, MPFR_RNDN);
        mpfr_neg(r48849, r48848, MPFR_RNDN);
        mpfr_exp(r48850, r48849, MPFR_RNDN);
        mpfr_add(r48851, r48847, r48850, MPFR_RNDN);
        mpfr_div(r48852, r48847, r48851, MPFR_RNDN);
        mpfr_sub(r48853, r48847, r48852, MPFR_RNDN);
        mpfr_neg(r48854, r48844, MPFR_RNDN);
        mpfr_exp(r48855, r48854, MPFR_RNDN);
        mpfr_add(r48856, r48847, r48855, MPFR_RNDN);
        mpfr_div(r48857, r48847, r48856, MPFR_RNDN);
        mpfr_sub(r48858, r48847, r48857, MPFR_RNDN);
        mpfr_div(r48859, r48853, r48858, MPFR_RNDN);
        mpfr_set_d(r48860, c_n, MPFR_RNDN);
        mpfr_pow(r48861, r48859, r48860, MPFR_RNDN);
        mpfr_set_d(r48862, c_p, MPFR_RNDN);
        mpfr_neg(r48863, r48862, MPFR_RNDN);
        mpfr_sub(r48864, r48844, r48848, MPFR_RNDN);
        ;
        mpfr_mul(r48866, r48864, r48865, MPFR_RNDN);
        ;
        mpfr_mul(r48868, r48848, r48867, MPFR_RNDN);
        mpfr_mul(r48869, r48868, r48848, MPFR_RNDN);
        mpfr_add(r48870, r48866, r48869, MPFR_RNDN);
        mpfr_mul(r48871, r48863, r48870, MPFR_RNDN);
        mpfr_exp(r48872, r48871, MPFR_RNDN);
        mpfr_mul(r48873, r48861, r48872, MPFR_RNDN);
        mpfr_log(r48874, r48851, MPFR_RNDN);
        mpfr_add(r48875, r48855, r48847, MPFR_RNDN);
        mpfr_log(r48876, r48875, MPFR_RNDN);
        mpfr_sub(r48877, r48874, r48876, MPFR_RNDN);
        mpfr_mul(r48878, r48877, r48863, MPFR_RNDN);
        mpfr_log(r48879, r48853, MPFR_RNDN);
        mpfr_div(r48880, r48847, r48875, MPFR_RNDN);
        mpfr_sub(r48881, r48847, r48880, MPFR_RNDN);
        mpfr_log(r48882, r48881, MPFR_RNDN);
        mpfr_sub(r48883, r48879, r48882, MPFR_RNDN);
        mpfr_mul(r48884, r48883, r48860, MPFR_RNDN);
        mpfr_add(r48885, r48878, r48884, MPFR_RNDN);
        mpfr_exp(r48886, r48885, MPFR_RNDN);
        if (mpfr_get_si(r48846, MPFR_RNDN)) { mpfr_set(r48887, r48873, MPFR_RNDN); } else { mpfr_set(r48887, r48886, MPFR_RNDN); };
        return mpfr_get_d(r48887, MPFR_RNDN);
}

