#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 r53244 = 3.0;
        float r53245 = 2.0;
        float r53246 = x;
        float r53247 = r53246 * r53244;
        float r53248 = r53245 - r53247;
        float r53249 = r53244 * r53248;
        float r53250 = r53249 * r53246;
        return r53250;
}

double f_id(double x) {
        double r53251 = 3.0;
        double r53252 = 2.0;
        double r53253 = x;
        double r53254 = r53253 * r53251;
        double r53255 = r53252 - r53254;
        double r53256 = r53251 * r53255;
        double r53257 = r53256 * r53253;
        return r53257;
}


double f_of(float x) {
        float r53258 = 6.0;
        float r53259 = 9.0;
        float r53260 = x;
        float r53261 = r53259 * r53260;
        float r53262 = r53258 - r53261;
        float r53263 = r53262 * r53260;
        return r53263;
}

double f_od(double x) {
        double r53264 = 6.0;
        double r53265 = 9.0;
        double r53266 = x;
        double r53267 = r53265 * r53266;
        double r53268 = r53264 - r53267;
        double r53269 = r53268 * r53266;
        return r53269;
}

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 r53270, r53271, r53272, r53273, r53274, r53275, r53276;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53270, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53271, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53272);
        mpfr_init(r53273);
        mpfr_init(r53274);
        mpfr_init(r53275);
        mpfr_init(r53276);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r53272, x, MPFR_RNDN);
        mpfr_mul(r53273, r53272, r53270, MPFR_RNDN);
        mpfr_sub(r53274, r53271, r53273, MPFR_RNDN);
        mpfr_mul(r53275, r53270, r53274, MPFR_RNDN);
        mpfr_mul(r53276, r53275, r53272, MPFR_RNDN);
        return mpfr_get_d(r53276, MPFR_RNDN);
}

static mpfr_t r53277, r53278, r53279, r53280, r53281, r53282;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53277, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53278, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53279);
        mpfr_init(r53280);
        mpfr_init(r53281);
        mpfr_init(r53282);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r53279, x, MPFR_RNDN);
        mpfr_mul(r53280, r53278, r53279, MPFR_RNDN);
        mpfr_sub(r53281, r53277, r53280, MPFR_RNDN);
        mpfr_mul(r53282, r53281, r53279, MPFR_RNDN);
        return mpfr_get_d(r53282, MPFR_RNDN);
}

static mpfr_t r53283, r53284, r53285, r53286, r53287, r53288;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53283, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53284, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53285);
        mpfr_init(r53286);
        mpfr_init(r53287);
        mpfr_init(r53288);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r53285, x, MPFR_RNDN);
        mpfr_mul(r53286, r53284, r53285, MPFR_RNDN);
        mpfr_sub(r53287, r53283, r53286, MPFR_RNDN);
        mpfr_mul(r53288, r53287, r53285, MPFR_RNDN);
        return mpfr_get_d(r53288, MPFR_RNDN);
}

