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

char *name = "neg log";

double f_if(float x) {
        float r8261 = 1;
        float r8262 = x;
        float r8263 = r8261 / r8262;
        float r8264 = r8263 - r8261;
        float r8265 = log(r8264);
        float r8266 = -r8265;
        return r8266;
}

double f_id(double x) {
        double r8267 = 1;
        double r8268 = x;
        double r8269 = r8267 / r8268;
        double r8270 = r8269 - r8267;
        double r8271 = log(r8270);
        double r8272 = -r8271;
        return r8272;
}


double f_of(float x) {
        float r8273 = 1;
        float r8274 = x;
        float r8275 = r8273 / r8274;
        float r8276 = r8275 - r8273;
        float r8277 = log(r8276);
        float r8278 = -r8277;
        return r8278;
}

double f_od(double x) {
        double r8279 = 1;
        double r8280 = x;
        double r8281 = r8279 / r8280;
        double r8282 = r8281 - r8279;
        double r8283 = log(r8282);
        double r8284 = -r8283;
        return r8284;
}

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 r8285, r8286, r8287, r8288, r8289, r8290;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8285, "1", 10, MPFR_RNDN);
        mpfr_init(r8286);
        mpfr_init(r8287);
        mpfr_init(r8288);
        mpfr_init(r8289);
        mpfr_init(r8290);
}

double f_im(double x) {
        ;
        mpfr_set_d(r8286, x, MPFR_RNDN);
        mpfr_div(r8287, r8285, r8286, MPFR_RNDN);
        mpfr_sub(r8288, r8287, r8285, MPFR_RNDN);
        mpfr_log(r8289, r8288, MPFR_RNDN);
        mpfr_neg(r8290, r8289, MPFR_RNDN);
        return mpfr_get_d(r8290, MPFR_RNDN);
}

static mpfr_t r8291, r8292, r8293, r8294, r8295, r8296;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8291, "1", 10, MPFR_RNDN);
        mpfr_init(r8292);
        mpfr_init(r8293);
        mpfr_init(r8294);
        mpfr_init(r8295);
        mpfr_init(r8296);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8292, x, MPFR_RNDN);
        mpfr_div(r8293, r8291, r8292, MPFR_RNDN);
        mpfr_sub(r8294, r8293, r8291, MPFR_RNDN);
        mpfr_log(r8295, r8294, MPFR_RNDN);
        mpfr_neg(r8296, r8295, MPFR_RNDN);
        return mpfr_get_d(r8296, MPFR_RNDN);
}

static mpfr_t r8297, r8298, r8299, r8300, r8301, r8302;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8297, "1", 10, MPFR_RNDN);
        mpfr_init(r8298);
        mpfr_init(r8299);
        mpfr_init(r8300);
        mpfr_init(r8301);
        mpfr_init(r8302);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8298, x, MPFR_RNDN);
        mpfr_div(r8299, r8297, r8298, MPFR_RNDN);
        mpfr_sub(r8300, r8299, r8297, MPFR_RNDN);
        mpfr_log(r8301, r8300, MPFR_RNDN);
        mpfr_neg(r8302, r8301, MPFR_RNDN);
        return mpfr_get_d(r8302, MPFR_RNDN);
}

