#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 r45566 = 1.0;
        float r45567 = x;
        float r45568 = r45567 * r45567;
        float r45569 = r45566 / r45568;
        return r45569;
}

double f_id(double x) {
        double r45570 = 1.0;
        double r45571 = x;
        double r45572 = r45571 * r45571;
        double r45573 = r45570 / r45572;
        return r45573;
}


double f_of(float x) {
        float r45574 = 1.0;
        float r45575 = x;
        float r45576 = r45574 / r45575;
        float r45577 = r45576 / r45575;
        return r45577;
}

double f_od(double x) {
        double r45578 = 1.0;
        double r45579 = x;
        double r45580 = r45578 / r45579;
        double r45581 = r45580 / r45579;
        return r45581;
}

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 r45582, r45583, r45584, r45585;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r45582, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45583);
        mpfr_init(r45584);
        mpfr_init(r45585);
}

double f_im(double x) {
        ;
        mpfr_set_d(r45583, x, MPFR_RNDN);
        mpfr_mul(r45584, r45583, r45583, MPFR_RNDN);
        mpfr_div(r45585, r45582, r45584, MPFR_RNDN);
        return mpfr_get_d(r45585, MPFR_RNDN);
}

static mpfr_t r45586, r45587, r45588, r45589;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r45586, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45587);
        mpfr_init(r45588);
        mpfr_init(r45589);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r45587, x, MPFR_RNDN);
        mpfr_div(r45588, r45586, r45587, MPFR_RNDN);
        mpfr_div(r45589, r45588, r45587, MPFR_RNDN);
        return mpfr_get_d(r45589, MPFR_RNDN);
}

static mpfr_t r45590, r45591, r45592, r45593;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r45590, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45591);
        mpfr_init(r45592);
        mpfr_init(r45593);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r45591, x, MPFR_RNDN);
        mpfr_div(r45592, r45590, r45591, MPFR_RNDN);
        mpfr_div(r45593, r45592, r45591, MPFR_RNDN);
        return mpfr_get_d(r45593, MPFR_RNDN);
}

