#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 r52155 = 3.0;
        float r52156 = 2.0;
        float r52157 = x;
        float r52158 = r52157 * r52155;
        float r52159 = r52156 - r52158;
        float r52160 = r52155 * r52159;
        float r52161 = r52160 * r52157;
        return r52161;
}

double f_id(double x) {
        double r52162 = 3.0;
        double r52163 = 2.0;
        double r52164 = x;
        double r52165 = r52164 * r52162;
        double r52166 = r52163 - r52165;
        double r52167 = r52162 * r52166;
        double r52168 = r52167 * r52164;
        return r52168;
}


double f_of(float x) {
        float r52169 = 6.0;
        float r52170 = 9.0;
        float r52171 = x;
        float r52172 = r52170 * r52171;
        float r52173 = r52169 - r52172;
        float r52174 = r52173 * r52171;
        return r52174;
}

double f_od(double x) {
        double r52175 = 6.0;
        double r52176 = 9.0;
        double r52177 = x;
        double r52178 = r52176 * r52177;
        double r52179 = r52175 - r52178;
        double r52180 = r52179 * r52177;
        return r52180;
}

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 r52181, r52182, r52183, r52184, r52185, r52186, r52187;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r52181, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52182, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52183);
        mpfr_init(r52184);
        mpfr_init(r52185);
        mpfr_init(r52186);
        mpfr_init(r52187);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r52183, x, MPFR_RNDN);
        mpfr_mul(r52184, r52183, r52181, MPFR_RNDN);
        mpfr_sub(r52185, r52182, r52184, MPFR_RNDN);
        mpfr_mul(r52186, r52181, r52185, MPFR_RNDN);
        mpfr_mul(r52187, r52186, r52183, MPFR_RNDN);
        return mpfr_get_d(r52187, MPFR_RNDN);
}

static mpfr_t r52188, r52189, r52190, r52191, r52192, r52193;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r52188, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52189, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52190);
        mpfr_init(r52191);
        mpfr_init(r52192);
        mpfr_init(r52193);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r52190, x, MPFR_RNDN);
        mpfr_mul(r52191, r52189, r52190, MPFR_RNDN);
        mpfr_sub(r52192, r52188, r52191, MPFR_RNDN);
        mpfr_mul(r52193, r52192, r52190, MPFR_RNDN);
        return mpfr_get_d(r52193, MPFR_RNDN);
}

static mpfr_t r52194, r52195, r52196, r52197, r52198, r52199;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r52194, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52195, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52196);
        mpfr_init(r52197);
        mpfr_init(r52198);
        mpfr_init(r52199);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r52196, x, MPFR_RNDN);
        mpfr_mul(r52197, r52195, r52196, MPFR_RNDN);
        mpfr_sub(r52198, r52194, r52197, MPFR_RNDN);
        mpfr_mul(r52199, r52198, r52196, MPFR_RNDN);
        return mpfr_get_d(r52199, MPFR_RNDN);
}

