#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 r4617773 = N;
        float r4617774 = 1.0f;
        float r4617775 = r4617773 + r4617774;
        float r4617776 = log(r4617775);
        float r4617777 = log(r4617773);
        float r4617778 = r4617776 - r4617777;
        return r4617778;
}

double f_id(double N) {
        double r4617779 = N;
        double r4617780 = 1.0;
        double r4617781 = r4617779 + r4617780;
        double r4617782 = log(r4617781);
        double r4617783 = log(r4617779);
        double r4617784 = r4617782 - r4617783;
        return r4617784;
}


double f_of(float N) {
        float r4617785 = N;
        float r4617786 = 1438490.0801097094f;
        bool r4617787 = r4617785 <= r4617786;
        float r4617788 = 1.0f;
        float r4617789 = r4617785 + r4617788;
        float r4617790 = log(r4617789);
        float r4617791 = r4617790 * (r4617790 * r4617790);
        float r4617792 = log(r4617785);
        float r4617793 = r4617792 * (r4617792 * r4617792);
        float r4617794 = r4617791 - r4617793;
        float r4617795 = r4617790 * r4617790;
        float r4617796 = r4617792 * r4617792;
        float r4617797 = r4617790 * r4617792;
        float r4617798 = r4617796 + r4617797;
        float r4617799 = r4617795 + r4617798;
        float r4617800 = r4617794 / r4617799;
        float r4617801 = 0.3333333333333333f;
        float r4617802 = r4617801 / r4617785;
        float r4617803 = 0.5f;
        float r4617804 = r4617802 - r4617803;
        float r4617805 = r4617785 * r4617785;
        float r4617806 = r4617804 / r4617805;
        float r4617807 = r4617788 / r4617785;
        float r4617808 = r4617806 + r4617807;
        float r4617809 = r4617787 ? r4617800 : r4617808;
        return r4617809;
}

double f_od(double N) {
        double r4617810 = N;
        double r4617811 = 1438490.0801097094;
        bool r4617812 = r4617810 <= r4617811;
        double r4617813 = 1.0;
        double r4617814 = r4617810 + r4617813;
        double r4617815 = log(r4617814);
        double r4617816 = r4617815 * (r4617815 * r4617815);
        double r4617817 = log(r4617810);
        double r4617818 = r4617817 * (r4617817 * r4617817);
        double r4617819 = r4617816 - r4617818;
        double r4617820 = r4617815 * r4617815;
        double r4617821 = r4617817 * r4617817;
        double r4617822 = r4617815 * r4617817;
        double r4617823 = r4617821 + r4617822;
        double r4617824 = r4617820 + r4617823;
        double r4617825 = r4617819 / r4617824;
        double r4617826 = 0.3333333333333333;
        double r4617827 = r4617826 / r4617810;
        double r4617828 = 0.5;
        double r4617829 = r4617827 - r4617828;
        double r4617830 = r4617810 * r4617810;
        double r4617831 = r4617829 / r4617830;
        double r4617832 = r4617813 / r4617810;
        double r4617833 = r4617831 + r4617832;
        double r4617834 = r4617812 ? r4617825 : r4617833;
        return r4617834;
}

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 r4617835, r4617836, r4617837, r4617838, r4617839, r4617840;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4617835);
        mpfr_init_set_str(r4617836, "1", 10, MPFR_RNDN);
        mpfr_init(r4617837);
        mpfr_init(r4617838);
        mpfr_init(r4617839);
        mpfr_init(r4617840);
}

double f_im(double N) {
        mpfr_set_d(r4617835, N, MPFR_RNDN);
        ;
        mpfr_add(r4617837, r4617835, r4617836, MPFR_RNDN);
        mpfr_log(r4617838, r4617837, MPFR_RNDN);
        mpfr_log(r4617839, r4617835, MPFR_RNDN);
        mpfr_sub(r4617840, r4617838, r4617839, MPFR_RNDN);
        return mpfr_get_d(r4617840, MPFR_RNDN);
}

static mpfr_t r4617841, r4617842, r4617843, r4617844, r4617845, r4617846, r4617847, r4617848, r4617849, r4617850, r4617851, r4617852, r4617853, r4617854, r4617855, r4617856, r4617857, r4617858, r4617859, r4617860, r4617861, r4617862, r4617863, r4617864, r4617865;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4617841);
        mpfr_init_set_str(r4617842, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4617843);
        mpfr_init_set_str(r4617844, "1", 10, MPFR_RNDN);
        mpfr_init(r4617845);
        mpfr_init(r4617846);
        mpfr_init(r4617847);
        mpfr_init(r4617848);
        mpfr_init(r4617849);
        mpfr_init(r4617850);
        mpfr_init(r4617851);
        mpfr_init(r4617852);
        mpfr_init(r4617853);
        mpfr_init(r4617854);
        mpfr_init(r4617855);
        mpfr_init(r4617856);
        mpfr_init_set_str(r4617857, "1/3", 10, MPFR_RNDN);
        mpfr_init(r4617858);
        mpfr_init_set_str(r4617859, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4617860);
        mpfr_init(r4617861);
        mpfr_init(r4617862);
        mpfr_init(r4617863);
        mpfr_init(r4617864);
        mpfr_init(r4617865);
}

double f_fm(double N) {
        mpfr_set_d(r4617841, N, MPFR_RNDN);
        ;
        mpfr_set_si(r4617843, mpfr_cmp(r4617841, r4617842) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r4617845, r4617841, r4617844, MPFR_RNDN);
        mpfr_log(r4617846, r4617845, MPFR_RNDN);
        mpfr_mul(r4617847, r4617846, r4617846, MPFR_RNDN); mpfr_mul(r4617847, r4617847, r4617846, MPFR_RNDN);
        mpfr_log(r4617848, r4617841, MPFR_RNDN);
        mpfr_mul(r4617849, r4617848, r4617848, MPFR_RNDN); mpfr_mul(r4617849, r4617849, r4617848, MPFR_RNDN);
        mpfr_sub(r4617850, r4617847, r4617849, MPFR_RNDN);
        mpfr_sqr(r4617851, r4617846, MPFR_RNDN);
        mpfr_sqr(r4617852, r4617848, MPFR_RNDN);
        mpfr_mul(r4617853, r4617846, r4617848, MPFR_RNDN);
        mpfr_add(r4617854, r4617852, r4617853, MPFR_RNDN);
        mpfr_add(r4617855, r4617851, r4617854, MPFR_RNDN);
        mpfr_div(r4617856, r4617850, r4617855, MPFR_RNDN);
        ;
        mpfr_div(r4617858, r4617857, r4617841, MPFR_RNDN);
        ;
        mpfr_sub(r4617860, r4617858, r4617859, MPFR_RNDN);
        mpfr_sqr(r4617861, r4617841, MPFR_RNDN);
        mpfr_div(r4617862, r4617860, r4617861, MPFR_RNDN);
        mpfr_div(r4617863, r4617844, r4617841, MPFR_RNDN);
        mpfr_add(r4617864, r4617862, r4617863, MPFR_RNDN);
        if (mpfr_get_si(r4617843, MPFR_RNDN)) { mpfr_set(r4617865, r4617856, MPFR_RNDN); } else { mpfr_set(r4617865, r4617864, MPFR_RNDN); };
        return mpfr_get_d(r4617865, MPFR_RNDN);
}

static mpfr_t r4617866, r4617867, r4617868, r4617869, r4617870, r4617871, r4617872, r4617873, r4617874, r4617875, r4617876, r4617877, r4617878, r4617879, r4617880, r4617881, r4617882, r4617883, r4617884, r4617885, r4617886, r4617887, r4617888, r4617889, r4617890;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4617866);
        mpfr_init_set_str(r4617867, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4617868);
        mpfr_init_set_str(r4617869, "1", 10, MPFR_RNDN);
        mpfr_init(r4617870);
        mpfr_init(r4617871);
        mpfr_init(r4617872);
        mpfr_init(r4617873);
        mpfr_init(r4617874);
        mpfr_init(r4617875);
        mpfr_init(r4617876);
        mpfr_init(r4617877);
        mpfr_init(r4617878);
        mpfr_init(r4617879);
        mpfr_init(r4617880);
        mpfr_init(r4617881);
        mpfr_init_set_str(r4617882, "1/3", 10, MPFR_RNDN);
        mpfr_init(r4617883);
        mpfr_init_set_str(r4617884, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4617885);
        mpfr_init(r4617886);
        mpfr_init(r4617887);
        mpfr_init(r4617888);
        mpfr_init(r4617889);
        mpfr_init(r4617890);
}

double f_dm(double N) {
        mpfr_set_d(r4617866, N, MPFR_RNDN);
        ;
        mpfr_set_si(r4617868, mpfr_cmp(r4617866, r4617867) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r4617870, r4617866, r4617869, MPFR_RNDN);
        mpfr_log(r4617871, r4617870, MPFR_RNDN);
        mpfr_mul(r4617872, r4617871, r4617871, MPFR_RNDN); mpfr_mul(r4617872, r4617872, r4617871, MPFR_RNDN);
        mpfr_log(r4617873, r4617866, MPFR_RNDN);
        mpfr_mul(r4617874, r4617873, r4617873, MPFR_RNDN); mpfr_mul(r4617874, r4617874, r4617873, MPFR_RNDN);
        mpfr_sub(r4617875, r4617872, r4617874, MPFR_RNDN);
        mpfr_sqr(r4617876, r4617871, MPFR_RNDN);
        mpfr_sqr(r4617877, r4617873, MPFR_RNDN);
        mpfr_mul(r4617878, r4617871, r4617873, MPFR_RNDN);
        mpfr_add(r4617879, r4617877, r4617878, MPFR_RNDN);
        mpfr_add(r4617880, r4617876, r4617879, MPFR_RNDN);
        mpfr_div(r4617881, r4617875, r4617880, MPFR_RNDN);
        ;
        mpfr_div(r4617883, r4617882, r4617866, MPFR_RNDN);
        ;
        mpfr_sub(r4617885, r4617883, r4617884, MPFR_RNDN);
        mpfr_sqr(r4617886, r4617866, MPFR_RNDN);
        mpfr_div(r4617887, r4617885, r4617886, MPFR_RNDN);
        mpfr_div(r4617888, r4617869, r4617866, MPFR_RNDN);
        mpfr_add(r4617889, r4617887, r4617888, MPFR_RNDN);
        if (mpfr_get_si(r4617868, MPFR_RNDN)) { mpfr_set(r4617890, r4617881, MPFR_RNDN); } else { mpfr_set(r4617890, r4617889, MPFR_RNDN); };
        return mpfr_get_d(r4617890, MPFR_RNDN);
}

