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

char *name = "Diagrams.Tangent:$catParam from diagrams-lib-1.3.0.3, F";

double f_if(float x) {
        float r51255 = x;
        float r51256 = 3.0f;
        float r51257 = r51255 * r51256;
        float r51258 = r51257 * r51255;
        return r51258;
}

double f_id(double x) {
        double r51259 = x;
        double r51260 = 3.0;
        double r51261 = r51259 * r51260;
        double r51262 = r51261 * r51259;
        return r51262;
}


double f_of(float x) {
        float r51263 = x;
        float r51264 = 3.0f;
        float r51265 = r51263 * r51264;
        float r51266 = r51265 * r51263;
        return r51266;
}

double f_od(double x) {
        double r51267 = x;
        double r51268 = 3.0;
        double r51269 = r51267 * r51268;
        double r51270 = r51269 * r51267;
        return r51270;
}

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 r51271, r51272, r51273, r51274;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r51271);
        mpfr_init_set_str(r51272, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51273);
        mpfr_init(r51274);
}

double f_im(double x) {
        mpfr_set_d(r51271, x, MPFR_RNDN);
        ;
        mpfr_mul(r51273, r51271, r51272, MPFR_RNDN);
        mpfr_mul(r51274, r51273, r51271, MPFR_RNDN);
        return mpfr_get_d(r51274, MPFR_RNDN);
}

static mpfr_t r51275, r51276, r51277, r51278;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r51275);
        mpfr_init_set_str(r51276, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51277);
        mpfr_init(r51278);
}

double f_fm(double x) {
        mpfr_set_d(r51275, x, MPFR_RNDN);
        ;
        mpfr_mul(r51277, r51275, r51276, MPFR_RNDN);
        mpfr_mul(r51278, r51277, r51275, MPFR_RNDN);
        return mpfr_get_d(r51278, MPFR_RNDN);
}

static mpfr_t r51279, r51280, r51281, r51282;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r51279);
        mpfr_init_set_str(r51280, "3.0", 10, MPFR_RNDN);
        mpfr_init(r51281);
        mpfr_init(r51282);
}

double f_dm(double x) {
        mpfr_set_d(r51279, x, MPFR_RNDN);
        ;
        mpfr_mul(r51281, r51279, r51280, MPFR_RNDN);
        mpfr_mul(r51282, r51281, r51279, MPFR_RNDN);
        return mpfr_get_d(r51282, MPFR_RNDN);
}

