#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 r53022 = 3.0;
        float r53023 = 2.0;
        float r53024 = x;
        float r53025 = r53024 * r53022;
        float r53026 = r53023 - r53025;
        float r53027 = r53022 * r53026;
        float r53028 = r53027 * r53024;
        return r53028;
}

double f_id(double x) {
        double r53029 = 3.0;
        double r53030 = 2.0;
        double r53031 = x;
        double r53032 = r53031 * r53029;
        double r53033 = r53030 - r53032;
        double r53034 = r53029 * r53033;
        double r53035 = r53034 * r53031;
        return r53035;
}


double f_of(float x) {
        float r53036 = 6.0;
        float r53037 = 9.0;
        float r53038 = x;
        float r53039 = r53037 * r53038;
        float r53040 = r53036 - r53039;
        float r53041 = r53040 * r53038;
        return r53041;
}

double f_od(double x) {
        double r53042 = 6.0;
        double r53043 = 9.0;
        double r53044 = x;
        double r53045 = r53043 * r53044;
        double r53046 = r53042 - r53045;
        double r53047 = r53046 * r53044;
        return r53047;
}

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 r53048, r53049, r53050, r53051, r53052, r53053, r53054;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53048, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53049, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53050);
        mpfr_init(r53051);
        mpfr_init(r53052);
        mpfr_init(r53053);
        mpfr_init(r53054);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r53050, x, MPFR_RNDN);
        mpfr_mul(r53051, r53050, r53048, MPFR_RNDN);
        mpfr_sub(r53052, r53049, r53051, MPFR_RNDN);
        mpfr_mul(r53053, r53048, r53052, MPFR_RNDN);
        mpfr_mul(r53054, r53053, r53050, MPFR_RNDN);
        return mpfr_get_d(r53054, MPFR_RNDN);
}

static mpfr_t r53055, r53056, r53057, r53058, r53059, r53060;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53055, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53056, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53057);
        mpfr_init(r53058);
        mpfr_init(r53059);
        mpfr_init(r53060);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r53057, x, MPFR_RNDN);
        mpfr_mul(r53058, r53056, r53057, MPFR_RNDN);
        mpfr_sub(r53059, r53055, r53058, MPFR_RNDN);
        mpfr_mul(r53060, r53059, r53057, MPFR_RNDN);
        return mpfr_get_d(r53060, MPFR_RNDN);
}

static mpfr_t r53061, r53062, r53063, r53064, r53065, r53066;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53061, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53062, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53063);
        mpfr_init(r53064);
        mpfr_init(r53065);
        mpfr_init(r53066);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r53063, x, MPFR_RNDN);
        mpfr_mul(r53064, r53062, r53063, MPFR_RNDN);
        mpfr_sub(r53065, r53061, r53064, MPFR_RNDN);
        mpfr_mul(r53066, r53065, r53063, MPFR_RNDN);
        return mpfr_get_d(r53066, MPFR_RNDN);
}

