#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 r52200 = 3.0;
        float r52201 = x;
        float r52202 = r52201 * r52200;
        float r52203 = r52202 * r52201;
        float r52204 = 4.0;
        float r52205 = r52201 * r52204;
        float r52206 = r52203 - r52205;
        float r52207 = 1.0;
        float r52208 = r52206 + r52207;
        float r52209 = r52200 * r52208;
        return r52209;
}

double f_id(double x) {
        double r52210 = 3.0;
        double r52211 = x;
        double r52212 = r52211 * r52210;
        double r52213 = r52212 * r52211;
        double r52214 = 4.0;
        double r52215 = r52211 * r52214;
        double r52216 = r52213 - r52215;
        double r52217 = 1.0;
        double r52218 = r52216 + r52217;
        double r52219 = r52210 * r52218;
        return r52219;
}


double f_of(float x) {
        float r52220 = 9.0;
        float r52221 = x;
        float r52222 = 2;
        float r52223 = pow(r52221, r52222);
        float r52224 = r52220 * r52223;
        float r52225 = 3.0;
        float r52226 = r52224 + r52225;
        float r52227 = 12.0;
        float r52228 = r52227 * r52221;
        float r52229 = r52226 - r52228;
        return r52229;
}

double f_od(double x) {
        double r52230 = 9.0;
        double r52231 = x;
        double r52232 = 2;
        double r52233 = pow(r52231, r52232);
        double r52234 = r52230 * r52233;
        double r52235 = 3.0;
        double r52236 = r52234 + r52235;
        double r52237 = 12.0;
        double r52238 = r52237 * r52231;
        double r52239 = r52236 - r52238;
        return r52239;
}

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 r52240, r52241, r52242, r52243, r52244, r52245, r52246, r52247, r52248, r52249;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52240, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52241);
        mpfr_init(r52242);
        mpfr_init(r52243);
        mpfr_init_set_str(r52244, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52245);
        mpfr_init(r52246);
        mpfr_init_set_str(r52247, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52248);
        mpfr_init(r52249);
}

double f_im(double x) {
        ;
        mpfr_set_d(r52241, x, MPFR_RNDN);
        mpfr_mul(r52242, r52241, r52240, MPFR_RNDN);
        mpfr_mul(r52243, r52242, r52241, MPFR_RNDN);
        ;
        mpfr_mul(r52245, r52241, r52244, MPFR_RNDN);
        mpfr_sub(r52246, r52243, r52245, MPFR_RNDN);
        ;
        mpfr_add(r52248, r52246, r52247, MPFR_RNDN);
        mpfr_mul(r52249, r52240, r52248, MPFR_RNDN);
        return mpfr_get_d(r52249, MPFR_RNDN);
}

static mpfr_t r52250, r52251, r52252, r52253, r52254, r52255, r52256, r52257, r52258, r52259;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52250, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52251);
        mpfr_init_set_str(r52252, "2", 10, MPFR_RNDN);
        mpfr_init(r52253);
        mpfr_init(r52254);
        mpfr_init_set_str(r52255, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52256);
        mpfr_init_set_str(r52257, "12.0", 10, MPFR_RNDN);
        mpfr_init(r52258);
        mpfr_init(r52259);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r52251, x, MPFR_RNDN);
        ;
        mpfr_pow(r52253, r52251, r52252, MPFR_RNDN);
        mpfr_mul(r52254, r52250, r52253, MPFR_RNDN);
        ;
        mpfr_add(r52256, r52254, r52255, MPFR_RNDN);
        ;
        mpfr_mul(r52258, r52257, r52251, MPFR_RNDN);
        mpfr_sub(r52259, r52256, r52258, MPFR_RNDN);
        return mpfr_get_d(r52259, MPFR_RNDN);
}

static mpfr_t r52260, r52261, r52262, r52263, r52264, r52265, r52266, r52267, r52268, r52269;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52260, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52261);
        mpfr_init_set_str(r52262, "2", 10, MPFR_RNDN);
        mpfr_init(r52263);
        mpfr_init(r52264);
        mpfr_init_set_str(r52265, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52266);
        mpfr_init_set_str(r52267, "12.0", 10, MPFR_RNDN);
        mpfr_init(r52268);
        mpfr_init(r52269);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r52261, x, MPFR_RNDN);
        ;
        mpfr_pow(r52263, r52261, r52262, MPFR_RNDN);
        mpfr_mul(r52264, r52260, r52263, MPFR_RNDN);
        ;
        mpfr_add(r52266, r52264, r52265, MPFR_RNDN);
        ;
        mpfr_mul(r52268, r52267, r52261, MPFR_RNDN);
        mpfr_sub(r52269, r52266, r52268, MPFR_RNDN);
        return mpfr_get_d(r52269, MPFR_RNDN);
}

