#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 r5352841 = N;
        float r5352842 = 1.0f;
        float r5352843 = r5352841 + r5352842;
        float r5352844 = log(r5352843);
        float r5352845 = log(r5352841);
        float r5352846 = r5352844 - r5352845;
        return r5352846;
}

double f_id(double N) {
        double r5352847 = N;
        double r5352848 = 1.0;
        double r5352849 = r5352847 + r5352848;
        double r5352850 = log(r5352849);
        double r5352851 = log(r5352847);
        double r5352852 = r5352850 - r5352851;
        return r5352852;
}


double f_of(float N) {
        float r5352853 = N;
        float r5352854 = 302499.0382693721f;
        bool r5352855 = r5352853 <= r5352854;
        float r5352856 = 1.0f;
        float r5352857 = r5352853 + r5352856;
        float r5352858 = r5352857 / r5352853;
        float r5352859 = log(r5352858);
        float r5352860 = 0.3333333333333333f;
        float r5352861 = r5352860 / r5352853;
        float r5352862 = 0.5f;
        float r5352863 = r5352861 - r5352862;
        float r5352864 = r5352853 * r5352853;
        float r5352865 = r5352863 / r5352864;
        float r5352866 = r5352856 / r5352853;
        float r5352867 = r5352865 + r5352866;
        float r5352868 = r5352855 ? r5352859 : r5352867;
        return r5352868;
}

double f_od(double N) {
        double r5352869 = N;
        double r5352870 = 302499.0382693721;
        bool r5352871 = r5352869 <= r5352870;
        double r5352872 = 1.0;
        double r5352873 = r5352869 + r5352872;
        double r5352874 = r5352873 / r5352869;
        double r5352875 = log(r5352874);
        double r5352876 = 0.3333333333333333;
        double r5352877 = r5352876 / r5352869;
        double r5352878 = 0.5;
        double r5352879 = r5352877 - r5352878;
        double r5352880 = r5352869 * r5352869;
        double r5352881 = r5352879 / r5352880;
        double r5352882 = r5352872 / r5352869;
        double r5352883 = r5352881 + r5352882;
        double r5352884 = r5352871 ? r5352875 : r5352883;
        return r5352884;
}

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 r5352885, r5352886, r5352887, r5352888, r5352889, r5352890;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5352885);
        mpfr_init_set_str(r5352886, "1", 10, MPFR_RNDN);
        mpfr_init(r5352887);
        mpfr_init(r5352888);
        mpfr_init(r5352889);
        mpfr_init(r5352890);
}

double f_im(double N) {
        mpfr_set_d(r5352885, N, MPFR_RNDN);
        ;
        mpfr_add(r5352887, r5352885, r5352886, MPFR_RNDN);
        mpfr_log(r5352888, r5352887, MPFR_RNDN);
        mpfr_log(r5352889, r5352885, MPFR_RNDN);
        mpfr_sub(r5352890, r5352888, r5352889, MPFR_RNDN);
        return mpfr_get_d(r5352890, MPFR_RNDN);
}

static mpfr_t r5352891, r5352892, r5352893, r5352894, r5352895, r5352896, r5352897, r5352898, r5352899, r5352900, r5352901, r5352902, r5352903, r5352904, r5352905, r5352906;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5352891);
        mpfr_init_set_str(r5352892, "302499.0382693721", 10, MPFR_RNDN);
        mpfr_init(r5352893);
        mpfr_init_set_str(r5352894, "1", 10, MPFR_RNDN);
        mpfr_init(r5352895);
        mpfr_init(r5352896);
        mpfr_init(r5352897);
        mpfr_init_set_str(r5352898, "1/3", 10, MPFR_RNDN);
        mpfr_init(r5352899);
        mpfr_init_set_str(r5352900, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5352901);
        mpfr_init(r5352902);
        mpfr_init(r5352903);
        mpfr_init(r5352904);
        mpfr_init(r5352905);
        mpfr_init(r5352906);
}

double f_fm(double N) {
        mpfr_set_d(r5352891, N, MPFR_RNDN);
        ;
        mpfr_set_si(r5352893, mpfr_cmp(r5352891, r5352892) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r5352895, r5352891, r5352894, MPFR_RNDN);
        mpfr_div(r5352896, r5352895, r5352891, MPFR_RNDN);
        mpfr_log(r5352897, r5352896, MPFR_RNDN);
        ;
        mpfr_div(r5352899, r5352898, r5352891, MPFR_RNDN);
        ;
        mpfr_sub(r5352901, r5352899, r5352900, MPFR_RNDN);
        mpfr_sqr(r5352902, r5352891, MPFR_RNDN);
        mpfr_div(r5352903, r5352901, r5352902, MPFR_RNDN);
        mpfr_div(r5352904, r5352894, r5352891, MPFR_RNDN);
        mpfr_add(r5352905, r5352903, r5352904, MPFR_RNDN);
        if (mpfr_get_si(r5352893, MPFR_RNDN)) { mpfr_set(r5352906, r5352897, MPFR_RNDN); } else { mpfr_set(r5352906, r5352905, MPFR_RNDN); };
        return mpfr_get_d(r5352906, MPFR_RNDN);
}

static mpfr_t r5352907, r5352908, r5352909, r5352910, r5352911, r5352912, r5352913, r5352914, r5352915, r5352916, r5352917, r5352918, r5352919, r5352920, r5352921, r5352922;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5352907);
        mpfr_init_set_str(r5352908, "302499.0382693721", 10, MPFR_RNDN);
        mpfr_init(r5352909);
        mpfr_init_set_str(r5352910, "1", 10, MPFR_RNDN);
        mpfr_init(r5352911);
        mpfr_init(r5352912);
        mpfr_init(r5352913);
        mpfr_init_set_str(r5352914, "1/3", 10, MPFR_RNDN);
        mpfr_init(r5352915);
        mpfr_init_set_str(r5352916, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5352917);
        mpfr_init(r5352918);
        mpfr_init(r5352919);
        mpfr_init(r5352920);
        mpfr_init(r5352921);
        mpfr_init(r5352922);
}

double f_dm(double N) {
        mpfr_set_d(r5352907, N, MPFR_RNDN);
        ;
        mpfr_set_si(r5352909, mpfr_cmp(r5352907, r5352908) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r5352911, r5352907, r5352910, MPFR_RNDN);
        mpfr_div(r5352912, r5352911, r5352907, MPFR_RNDN);
        mpfr_log(r5352913, r5352912, MPFR_RNDN);
        ;
        mpfr_div(r5352915, r5352914, r5352907, MPFR_RNDN);
        ;
        mpfr_sub(r5352917, r5352915, r5352916, MPFR_RNDN);
        mpfr_sqr(r5352918, r5352907, MPFR_RNDN);
        mpfr_div(r5352919, r5352917, r5352918, MPFR_RNDN);
        mpfr_div(r5352920, r5352910, r5352907, MPFR_RNDN);
        mpfr_add(r5352921, r5352919, r5352920, MPFR_RNDN);
        if (mpfr_get_si(r5352909, MPFR_RNDN)) { mpfr_set(r5352922, r5352913, MPFR_RNDN); } else { mpfr_set(r5352922, r5352921, MPFR_RNDN); };
        return mpfr_get_d(r5352922, MPFR_RNDN);
}

