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

double f_if(float x) {
        float r53261 = 3.0;
        float r53262 = x;
        float r53263 = r53262 * r53261;
        float r53264 = r53263 * r53262;
        float r53265 = 4.0;
        float r53266 = r53262 * r53265;
        float r53267 = r53264 - r53266;
        float r53268 = 1.0;
        float r53269 = r53267 + r53268;
        float r53270 = r53261 * r53269;
        return r53270;
}

double f_id(double x) {
        double r53271 = 3.0;
        double r53272 = x;
        double r53273 = r53272 * r53271;
        double r53274 = r53273 * r53272;
        double r53275 = 4.0;
        double r53276 = r53272 * r53275;
        double r53277 = r53274 - r53276;
        double r53278 = 1.0;
        double r53279 = r53277 + r53278;
        double r53280 = r53271 * r53279;
        return r53280;
}


double f_of(float x) {
        float r53281 = 9.0;
        float r53282 = x;
        float r53283 = 2;
        float r53284 = pow(r53282, r53283);
        float r53285 = r53281 * r53284;
        float r53286 = 3.0;
        float r53287 = r53285 + r53286;
        float r53288 = 12.0;
        float r53289 = r53288 * r53282;
        float r53290 = r53287 - r53289;
        return r53290;
}

double f_od(double x) {
        double r53291 = 9.0;
        double r53292 = x;
        double r53293 = 2;
        double r53294 = pow(r53292, r53293);
        double r53295 = r53291 * r53294;
        double r53296 = 3.0;
        double r53297 = r53295 + r53296;
        double r53298 = 12.0;
        double r53299 = r53298 * r53292;
        double r53300 = r53297 - r53299;
        return r53300;
}

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 r53301, r53302, r53303, r53304, r53305, r53306, r53307, r53308, r53309, r53310;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53301, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53302);
        mpfr_init(r53303);
        mpfr_init(r53304);
        mpfr_init_set_str(r53305, "4.0", 10, MPFR_RNDN);
        mpfr_init(r53306);
        mpfr_init(r53307);
        mpfr_init_set_str(r53308, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53309);
        mpfr_init(r53310);
}

double f_im(double x) {
        ;
        mpfr_set_d(r53302, x, MPFR_RNDN);
        mpfr_mul(r53303, r53302, r53301, MPFR_RNDN);
        mpfr_mul(r53304, r53303, r53302, MPFR_RNDN);
        ;
        mpfr_mul(r53306, r53302, r53305, MPFR_RNDN);
        mpfr_sub(r53307, r53304, r53306, MPFR_RNDN);
        ;
        mpfr_add(r53309, r53307, r53308, MPFR_RNDN);
        mpfr_mul(r53310, r53301, r53309, MPFR_RNDN);
        return mpfr_get_d(r53310, MPFR_RNDN);
}

static mpfr_t r53311, r53312, r53313, r53314, r53315, r53316, r53317, r53318, r53319, r53320;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53311, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53312);
        mpfr_init_set_str(r53313, "2", 10, MPFR_RNDN);
        mpfr_init(r53314);
        mpfr_init(r53315);
        mpfr_init_set_str(r53316, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53317);
        mpfr_init_set_str(r53318, "12.0", 10, MPFR_RNDN);
        mpfr_init(r53319);
        mpfr_init(r53320);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r53312, x, MPFR_RNDN);
        ;
        mpfr_pow(r53314, r53312, r53313, MPFR_RNDN);
        mpfr_mul(r53315, r53311, r53314, MPFR_RNDN);
        ;
        mpfr_add(r53317, r53315, r53316, MPFR_RNDN);
        ;
        mpfr_mul(r53319, r53318, r53312, MPFR_RNDN);
        mpfr_sub(r53320, r53317, r53319, MPFR_RNDN);
        return mpfr_get_d(r53320, MPFR_RNDN);
}

static mpfr_t r53321, r53322, r53323, r53324, r53325, r53326, r53327, r53328, r53329, r53330;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53321, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53322);
        mpfr_init_set_str(r53323, "2", 10, MPFR_RNDN);
        mpfr_init(r53324);
        mpfr_init(r53325);
        mpfr_init_set_str(r53326, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53327);
        mpfr_init_set_str(r53328, "12.0", 10, MPFR_RNDN);
        mpfr_init(r53329);
        mpfr_init(r53330);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r53322, x, MPFR_RNDN);
        ;
        mpfr_pow(r53324, r53322, r53323, MPFR_RNDN);
        mpfr_mul(r53325, r53321, r53324, MPFR_RNDN);
        ;
        mpfr_add(r53327, r53325, r53326, MPFR_RNDN);
        ;
        mpfr_mul(r53329, r53328, r53322, MPFR_RNDN);
        mpfr_sub(r53330, r53327, r53329, MPFR_RNDN);
        return mpfr_get_d(r53330, MPFR_RNDN);
}

