#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, E";

double f_if(float x) {
        float r53404 = 3.0;
        float r53405 = 2.0;
        float r53406 = x;
        float r53407 = r53406 * r53404;
        float r53408 = r53405 - r53407;
        float r53409 = r53404 * r53408;
        float r53410 = r53409 * r53406;
        return r53410;
}

double f_id(double x) {
        double r53411 = 3.0;
        double r53412 = 2.0;
        double r53413 = x;
        double r53414 = r53413 * r53411;
        double r53415 = r53412 - r53414;
        double r53416 = r53411 * r53415;
        double r53417 = r53416 * r53413;
        return r53417;
}


double f_of(float x) {
        float r53418 = 6.0;
        float r53419 = 9.0;
        float r53420 = x;
        float r53421 = r53419 * r53420;
        float r53422 = r53418 - r53421;
        float r53423 = r53422 * r53420;
        return r53423;
}

double f_od(double x) {
        double r53424 = 6.0;
        double r53425 = 9.0;
        double r53426 = x;
        double r53427 = r53425 * r53426;
        double r53428 = r53424 - r53427;
        double r53429 = r53428 * r53426;
        return r53429;
}

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 r53430, r53431, r53432, r53433, r53434, r53435, r53436;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53430, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53431, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53432);
        mpfr_init(r53433);
        mpfr_init(r53434);
        mpfr_init(r53435);
        mpfr_init(r53436);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r53432, x, MPFR_RNDN);
        mpfr_mul(r53433, r53432, r53430, MPFR_RNDN);
        mpfr_sub(r53434, r53431, r53433, MPFR_RNDN);
        mpfr_mul(r53435, r53430, r53434, MPFR_RNDN);
        mpfr_mul(r53436, r53435, r53432, MPFR_RNDN);
        return mpfr_get_d(r53436, MPFR_RNDN);
}

static mpfr_t r53437, r53438, r53439, r53440, r53441, r53442;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53437, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53438, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53439);
        mpfr_init(r53440);
        mpfr_init(r53441);
        mpfr_init(r53442);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r53439, x, MPFR_RNDN);
        mpfr_mul(r53440, r53438, r53439, MPFR_RNDN);
        mpfr_sub(r53441, r53437, r53440, MPFR_RNDN);
        mpfr_mul(r53442, r53441, r53439, MPFR_RNDN);
        return mpfr_get_d(r53442, MPFR_RNDN);
}

static mpfr_t r53443, r53444, r53445, r53446, r53447, r53448;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53443, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53444, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53445);
        mpfr_init(r53446);
        mpfr_init(r53447);
        mpfr_init(r53448);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r53445, x, MPFR_RNDN);
        mpfr_mul(r53446, r53444, r53445, MPFR_RNDN);
        mpfr_sub(r53447, r53443, r53446, MPFR_RNDN);
        mpfr_mul(r53448, r53447, r53445, MPFR_RNDN);
        return mpfr_get_d(r53448, MPFR_RNDN);
}

