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

char *name = "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, A";

double f_if(float x) {
        float r45049 = 1.0;
        float r45050 = x;
        float r45051 = r45050 * r45050;
        float r45052 = r45049 / r45051;
        return r45052;
}

double f_id(double x) {
        double r45053 = 1.0;
        double r45054 = x;
        double r45055 = r45054 * r45054;
        double r45056 = r45053 / r45055;
        return r45056;
}


double f_of(float x) {
        float r45057 = 1.0;
        float r45058 = x;
        float r45059 = r45057 / r45058;
        float r45060 = r45059 / r45058;
        return r45060;
}

double f_od(double x) {
        double r45061 = 1.0;
        double r45062 = x;
        double r45063 = r45061 / r45062;
        double r45064 = r45063 / r45062;
        return r45064;
}

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 r45065, r45066, r45067, r45068;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r45065, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45066);
        mpfr_init(r45067);
        mpfr_init(r45068);
}

double f_im(double x) {
        ;
        mpfr_set_d(r45066, x, MPFR_RNDN);
        mpfr_mul(r45067, r45066, r45066, MPFR_RNDN);
        mpfr_div(r45068, r45065, r45067, MPFR_RNDN);
        return mpfr_get_d(r45068, MPFR_RNDN);
}

static mpfr_t r45069, r45070, r45071, r45072;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r45069, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45070);
        mpfr_init(r45071);
        mpfr_init(r45072);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r45070, x, MPFR_RNDN);
        mpfr_div(r45071, r45069, r45070, MPFR_RNDN);
        mpfr_div(r45072, r45071, r45070, MPFR_RNDN);
        return mpfr_get_d(r45072, MPFR_RNDN);
}

static mpfr_t r45073, r45074, r45075, r45076;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r45073, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45074);
        mpfr_init(r45075);
        mpfr_init(r45076);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r45074, x, MPFR_RNDN);
        mpfr_div(r45075, r45073, r45074, MPFR_RNDN);
        mpfr_div(r45076, r45075, r45074, MPFR_RNDN);
        return mpfr_get_d(r45076, MPFR_RNDN);
}

