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

char *name = "NMSE problem 3.3.6";

double f_if(float N) {
        float r4773725 = N;
        float r4773726 = 1.0f;
        float r4773727 = r4773725 + r4773726;
        float r4773728 = log(r4773727);
        float r4773729 = log(r4773725);
        float r4773730 = r4773728 - r4773729;
        return r4773730;
}

double f_id(double N) {
        double r4773731 = N;
        double r4773732 = 1.0;
        double r4773733 = r4773731 + r4773732;
        double r4773734 = log(r4773733);
        double r4773735 = log(r4773731);
        double r4773736 = r4773734 - r4773735;
        return r4773736;
}


double f_of(float N) {
        float r4773737 = N;
        float r4773738 = 1438490.0801097094f;
        bool r4773739 = r4773737 <= r4773738;
        float r4773740 = 1.0f;
        float r4773741 = r4773737 + r4773740;
        float r4773742 = log(r4773741);
        float r4773743 = r4773742 * (r4773742 * r4773742);
        float r4773744 = log(r4773737);
        float r4773745 = r4773744 * (r4773744 * r4773744);
        float r4773746 = r4773743 - r4773745;
        float r4773747 = r4773742 * r4773742;
        float r4773748 = r4773744 * r4773744;
        float r4773749 = r4773742 * r4773744;
        float r4773750 = r4773748 + r4773749;
        float r4773751 = r4773747 + r4773750;
        float r4773752 = r4773746 / r4773751;
        float r4773753 = r4773740 / r4773737;
        float r4773754 = 0.3333333333333333f;
        float r4773755 = r4773754 / r4773737;
        float r4773756 = 0.5f;
        float r4773757 = r4773755 - r4773756;
        float r4773758 = r4773737 * r4773737;
        float r4773759 = r4773757 / r4773758;
        float r4773760 = r4773753 + r4773759;
        float r4773761 = r4773739 ? r4773752 : r4773760;
        return r4773761;
}

double f_od(double N) {
        double r4773762 = N;
        double r4773763 = 1438490.0801097094;
        bool r4773764 = r4773762 <= r4773763;
        double r4773765 = 1.0;
        double r4773766 = r4773762 + r4773765;
        double r4773767 = log(r4773766);
        double r4773768 = r4773767 * (r4773767 * r4773767);
        double r4773769 = log(r4773762);
        double r4773770 = r4773769 * (r4773769 * r4773769);
        double r4773771 = r4773768 - r4773770;
        double r4773772 = r4773767 * r4773767;
        double r4773773 = r4773769 * r4773769;
        double r4773774 = r4773767 * r4773769;
        double r4773775 = r4773773 + r4773774;
        double r4773776 = r4773772 + r4773775;
        double r4773777 = r4773771 / r4773776;
        double r4773778 = r4773765 / r4773762;
        double r4773779 = 0.3333333333333333;
        double r4773780 = r4773779 / r4773762;
        double r4773781 = 0.5;
        double r4773782 = r4773780 - r4773781;
        double r4773783 = r4773762 * r4773762;
        double r4773784 = r4773782 / r4773783;
        double r4773785 = r4773778 + r4773784;
        double r4773786 = r4773764 ? r4773777 : r4773785;
        return r4773786;
}

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 r4773787, r4773788, r4773789, r4773790, r4773791, r4773792;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773787);
        mpfr_init_set_str(r4773788, "1", 10, MPFR_RNDN);
        mpfr_init(r4773789);
        mpfr_init(r4773790);
        mpfr_init(r4773791);
        mpfr_init(r4773792);
}

double f_im(double N) {
        mpfr_set_d(r4773787, N, MPFR_RNDN);
        ;
        mpfr_add(r4773789, r4773787, r4773788, MPFR_RNDN);
        mpfr_log(r4773790, r4773789, MPFR_RNDN);
        mpfr_log(r4773791, r4773787, MPFR_RNDN);
        mpfr_sub(r4773792, r4773790, r4773791, MPFR_RNDN);
        return mpfr_get_d(r4773792, MPFR_RNDN);
}

static mpfr_t r4773793, r4773794, r4773795, r4773796, r4773797, r4773798, r4773799, r4773800, r4773801, r4773802, r4773803, r4773804, r4773805, r4773806, r4773807, r4773808, r4773809, r4773810, r4773811, r4773812, r4773813, r4773814, r4773815, r4773816, r4773817;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773793);
        mpfr_init_set_str(r4773794, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4773795);
        mpfr_init_set_str(r4773796, "1", 10, MPFR_RNDN);
        mpfr_init(r4773797);
        mpfr_init(r4773798);
        mpfr_init(r4773799);
        mpfr_init(r4773800);
        mpfr_init(r4773801);
        mpfr_init(r4773802);
        mpfr_init(r4773803);
        mpfr_init(r4773804);
        mpfr_init(r4773805);
        mpfr_init(r4773806);
        mpfr_init(r4773807);
        mpfr_init(r4773808);
        mpfr_init(r4773809);
        mpfr_init_set_str(r4773810, "1/3", 10, MPFR_RNDN);
        mpfr_init(r4773811);
        mpfr_init_set_str(r4773812, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4773813);
        mpfr_init(r4773814);
        mpfr_init(r4773815);
        mpfr_init(r4773816);
        mpfr_init(r4773817);
}

double f_fm(double N) {
        mpfr_set_d(r4773793, N, MPFR_RNDN);
        ;
        mpfr_set_si(r4773795, mpfr_cmp(r4773793, r4773794) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r4773797, r4773793, r4773796, MPFR_RNDN);
        mpfr_log(r4773798, r4773797, MPFR_RNDN);
        mpfr_mul(r4773799, r4773798, r4773798, MPFR_RNDN); mpfr_mul(r4773799, r4773799, r4773798, MPFR_RNDN);
        mpfr_log(r4773800, r4773793, MPFR_RNDN);
        mpfr_mul(r4773801, r4773800, r4773800, MPFR_RNDN); mpfr_mul(r4773801, r4773801, r4773800, MPFR_RNDN);
        mpfr_sub(r4773802, r4773799, r4773801, MPFR_RNDN);
        mpfr_sqr(r4773803, r4773798, MPFR_RNDN);
        mpfr_sqr(r4773804, r4773800, MPFR_RNDN);
        mpfr_mul(r4773805, r4773798, r4773800, MPFR_RNDN);
        mpfr_add(r4773806, r4773804, r4773805, MPFR_RNDN);
        mpfr_add(r4773807, r4773803, r4773806, MPFR_RNDN);
        mpfr_div(r4773808, r4773802, r4773807, MPFR_RNDN);
        mpfr_div(r4773809, r4773796, r4773793, MPFR_RNDN);
        ;
        mpfr_div(r4773811, r4773810, r4773793, MPFR_RNDN);
        ;
        mpfr_sub(r4773813, r4773811, r4773812, MPFR_RNDN);
        mpfr_sqr(r4773814, r4773793, MPFR_RNDN);
        mpfr_div(r4773815, r4773813, r4773814, MPFR_RNDN);
        mpfr_add(r4773816, r4773809, r4773815, MPFR_RNDN);
        if (mpfr_get_si(r4773795, MPFR_RNDN)) { mpfr_set(r4773817, r4773808, MPFR_RNDN); } else { mpfr_set(r4773817, r4773816, MPFR_RNDN); };
        return mpfr_get_d(r4773817, MPFR_RNDN);
}

static mpfr_t r4773818, r4773819, r4773820, r4773821, r4773822, r4773823, r4773824, r4773825, r4773826, r4773827, r4773828, r4773829, r4773830, r4773831, r4773832, r4773833, r4773834, r4773835, r4773836, r4773837, r4773838, r4773839, r4773840, r4773841, r4773842;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773818);
        mpfr_init_set_str(r4773819, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4773820);
        mpfr_init_set_str(r4773821, "1", 10, MPFR_RNDN);
        mpfr_init(r4773822);
        mpfr_init(r4773823);
        mpfr_init(r4773824);
        mpfr_init(r4773825);
        mpfr_init(r4773826);
        mpfr_init(r4773827);
        mpfr_init(r4773828);
        mpfr_init(r4773829);
        mpfr_init(r4773830);
        mpfr_init(r4773831);
        mpfr_init(r4773832);
        mpfr_init(r4773833);
        mpfr_init(r4773834);
        mpfr_init_set_str(r4773835, "1/3", 10, MPFR_RNDN);
        mpfr_init(r4773836);
        mpfr_init_set_str(r4773837, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4773838);
        mpfr_init(r4773839);
        mpfr_init(r4773840);
        mpfr_init(r4773841);
        mpfr_init(r4773842);
}

double f_dm(double N) {
        mpfr_set_d(r4773818, N, MPFR_RNDN);
        ;
        mpfr_set_si(r4773820, mpfr_cmp(r4773818, r4773819) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r4773822, r4773818, r4773821, MPFR_RNDN);
        mpfr_log(r4773823, r4773822, MPFR_RNDN);
        mpfr_mul(r4773824, r4773823, r4773823, MPFR_RNDN); mpfr_mul(r4773824, r4773824, r4773823, MPFR_RNDN);
        mpfr_log(r4773825, r4773818, MPFR_RNDN);
        mpfr_mul(r4773826, r4773825, r4773825, MPFR_RNDN); mpfr_mul(r4773826, r4773826, r4773825, MPFR_RNDN);
        mpfr_sub(r4773827, r4773824, r4773826, MPFR_RNDN);
        mpfr_sqr(r4773828, r4773823, MPFR_RNDN);
        mpfr_sqr(r4773829, r4773825, MPFR_RNDN);
        mpfr_mul(r4773830, r4773823, r4773825, MPFR_RNDN);
        mpfr_add(r4773831, r4773829, r4773830, MPFR_RNDN);
        mpfr_add(r4773832, r4773828, r4773831, MPFR_RNDN);
        mpfr_div(r4773833, r4773827, r4773832, MPFR_RNDN);
        mpfr_div(r4773834, r4773821, r4773818, MPFR_RNDN);
        ;
        mpfr_div(r4773836, r4773835, r4773818, MPFR_RNDN);
        ;
        mpfr_sub(r4773838, r4773836, r4773837, MPFR_RNDN);
        mpfr_sqr(r4773839, r4773818, MPFR_RNDN);
        mpfr_div(r4773840, r4773838, r4773839, MPFR_RNDN);
        mpfr_add(r4773841, r4773834, r4773840, MPFR_RNDN);
        if (mpfr_get_si(r4773820, MPFR_RNDN)) { mpfr_set(r4773842, r4773833, MPFR_RNDN); } else { mpfr_set(r4773842, r4773841, MPFR_RNDN); };
        return mpfr_get_d(r4773842, MPFR_RNDN);
}

