#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 r53216 = 3.0;
        float r53217 = 2.0;
        float r53218 = x;
        float r53219 = r53218 * r53216;
        float r53220 = r53217 - r53219;
        float r53221 = r53216 * r53220;
        float r53222 = r53221 * r53218;
        return r53222;
}

double f_id(double x) {
        double r53223 = 3.0;
        double r53224 = 2.0;
        double r53225 = x;
        double r53226 = r53225 * r53223;
        double r53227 = r53224 - r53226;
        double r53228 = r53223 * r53227;
        double r53229 = r53228 * r53225;
        return r53229;
}


double f_of(float x) {
        float r53230 = 6.0;
        float r53231 = 9.0;
        float r53232 = x;
        float r53233 = r53231 * r53232;
        float r53234 = r53230 - r53233;
        float r53235 = r53234 * r53232;
        return r53235;
}

double f_od(double x) {
        double r53236 = 6.0;
        double r53237 = 9.0;
        double r53238 = x;
        double r53239 = r53237 * r53238;
        double r53240 = r53236 - r53239;
        double r53241 = r53240 * r53238;
        return r53241;
}

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 r53242, r53243, r53244, r53245, r53246, r53247, r53248;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53242, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53243, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53244);
        mpfr_init(r53245);
        mpfr_init(r53246);
        mpfr_init(r53247);
        mpfr_init(r53248);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r53244, x, MPFR_RNDN);
        mpfr_mul(r53245, r53244, r53242, MPFR_RNDN);
        mpfr_sub(r53246, r53243, r53245, MPFR_RNDN);
        mpfr_mul(r53247, r53242, r53246, MPFR_RNDN);
        mpfr_mul(r53248, r53247, r53244, MPFR_RNDN);
        return mpfr_get_d(r53248, MPFR_RNDN);
}

static mpfr_t r53249, r53250, r53251, r53252, r53253, r53254;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53249, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53250, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53251);
        mpfr_init(r53252);
        mpfr_init(r53253);
        mpfr_init(r53254);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r53251, x, MPFR_RNDN);
        mpfr_mul(r53252, r53250, r53251, MPFR_RNDN);
        mpfr_sub(r53253, r53249, r53252, MPFR_RNDN);
        mpfr_mul(r53254, r53253, r53251, MPFR_RNDN);
        return mpfr_get_d(r53254, MPFR_RNDN);
}

static mpfr_t r53255, r53256, r53257, r53258, r53259, r53260;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53255, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53256, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53257);
        mpfr_init(r53258);
        mpfr_init(r53259);
        mpfr_init(r53260);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r53257, x, MPFR_RNDN);
        mpfr_mul(r53258, r53256, r53257, MPFR_RNDN);
        mpfr_sub(r53259, r53255, r53258, MPFR_RNDN);
        mpfr_mul(r53260, r53259, r53257, MPFR_RNDN);
        return mpfr_get_d(r53260, MPFR_RNDN);
}

