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

char *name = "logs (example 3.8)";

double f_if(float n) {
        float r9904 = n;
        float r9905 = 1.0f;
        float r9906 = r9904 + r9905;
        float r9907 = log(r9906);
        float r9908 = r9906 * r9907;
        float r9909 = log(r9904);
        float r9910 = r9904 * r9909;
        float r9911 = r9908 - r9910;
        float r9912 = r9911 - r9905;
        return r9912;
}

double f_id(double n) {
        double r9913 = n;
        double r9914 = 1.0;
        double r9915 = r9913 + r9914;
        double r9916 = log(r9915);
        double r9917 = r9915 * r9916;
        double r9918 = log(r9913);
        double r9919 = r9913 * r9918;
        double r9920 = r9917 - r9919;
        double r9921 = r9920 - r9914;
        return r9921;
}


double f_of(float n) {
        float r9922 = n;
        float r9923 = 0.3333333333333333f;
        float r9924 = r9923 / r9922;
        float r9925 = 0.5f;
        float r9926 = r9924 - r9925;
        float r9927 = 1.0f;
        float r9928 = r9922 * r9922;
        float r9929 = r9927 / r9928;
        float r9930 = r9927 / r9922;
        float r9931 = fma(r9926, r9929, r9930);
        float r9932 = r9927 + r9922;
        float r9933 = log(r9932);
        float r9934 = r9933 - r9927;
        float r9935 = fma(r9922, r9931, r9934);
        return r9935;
}

double f_od(double n) {
        double r9936 = n;
        double r9937 = 0.3333333333333333;
        double r9938 = r9937 / r9936;
        double r9939 = 0.5;
        double r9940 = r9938 - r9939;
        double r9941 = 1.0;
        double r9942 = r9936 * r9936;
        double r9943 = r9941 / r9942;
        double r9944 = r9941 / r9936;
        double r9945 = fma(r9940, r9943, r9944);
        double r9946 = r9941 + r9936;
        double r9947 = log(r9946);
        double r9948 = r9947 - r9941;
        double r9949 = fma(r9936, r9945, r9948);
        return r9949;
}

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 r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957, r9958;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9950);
        mpfr_init_set_str(r9951, "1", 10, MPFR_RNDN);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
}

double f_im(double n) {
        mpfr_set_d(r9950, n, MPFR_RNDN);
        ;
        mpfr_add(r9952, r9950, r9951, MPFR_RNDN);
        mpfr_log(r9953, r9952, MPFR_RNDN);
        mpfr_mul(r9954, r9952, r9953, MPFR_RNDN);
        mpfr_log(r9955, r9950, MPFR_RNDN);
        mpfr_mul(r9956, r9950, r9955, MPFR_RNDN);
        mpfr_sub(r9957, r9954, r9956, MPFR_RNDN);
        mpfr_sub(r9958, r9957, r9951, MPFR_RNDN);
        return mpfr_get_d(r9958, MPFR_RNDN);
}

static mpfr_t r9959, r9960, r9961, r9962, r9963, r9964, r9965, r9966, r9967, r9968, r9969, r9970, r9971, r9972;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9959);
        mpfr_init_set_str(r9960, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9961);
        mpfr_init_set_str(r9962, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9963);
        mpfr_init_set_str(r9964, "1", 10, MPFR_RNDN);
        mpfr_init(r9965);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init(r9971);
        mpfr_init(r9972);
}

double f_fm(double n) {
        mpfr_set_d(r9959, n, MPFR_RNDN);
        ;
        mpfr_div(r9961, r9960, r9959, MPFR_RNDN);
        ;
        mpfr_sub(r9963, r9961, r9962, MPFR_RNDN);
        ;
        mpfr_mul(r9965, r9959, r9959, MPFR_RNDN);
        mpfr_div(r9966, r9964, r9965, MPFR_RNDN);
        mpfr_div(r9967, r9964, r9959, MPFR_RNDN);
        mpfr_fma(r9968, r9963, r9966, r9967, MPFR_RNDN);
        mpfr_add(r9969, r9964, r9959, MPFR_RNDN);
        mpfr_log(r9970, r9969, MPFR_RNDN);
        mpfr_sub(r9971, r9970, r9964, MPFR_RNDN);
        mpfr_fma(r9972, r9959, r9968, r9971, MPFR_RNDN);
        return mpfr_get_d(r9972, MPFR_RNDN);
}

static mpfr_t r9973, r9974, r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982, r9983, r9984, r9985, r9986;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9973);
        mpfr_init_set_str(r9974, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9975);
        mpfr_init_set_str(r9976, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9977);
        mpfr_init_set_str(r9978, "1", 10, MPFR_RNDN);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
        mpfr_init(r9983);
        mpfr_init(r9984);
        mpfr_init(r9985);
        mpfr_init(r9986);
}

double f_dm(double n) {
        mpfr_set_d(r9973, n, MPFR_RNDN);
        ;
        mpfr_div(r9975, r9974, r9973, MPFR_RNDN);
        ;
        mpfr_sub(r9977, r9975, r9976, MPFR_RNDN);
        ;
        mpfr_mul(r9979, r9973, r9973, MPFR_RNDN);
        mpfr_div(r9980, r9978, r9979, MPFR_RNDN);
        mpfr_div(r9981, r9978, r9973, MPFR_RNDN);
        mpfr_fma(r9982, r9977, r9980, r9981, MPFR_RNDN);
        mpfr_add(r9983, r9978, r9973, MPFR_RNDN);
        mpfr_log(r9984, r9983, MPFR_RNDN);
        mpfr_sub(r9985, r9984, r9978, MPFR_RNDN);
        mpfr_fma(r9986, r9973, r9982, r9985, MPFR_RNDN);
        return mpfr_get_d(r9986, MPFR_RNDN);
}

