#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 r52984 = 3.0;
        float r52985 = 2.0;
        float r52986 = x;
        float r52987 = r52986 * r52984;
        float r52988 = r52985 - r52987;
        float r52989 = r52984 * r52988;
        float r52990 = r52989 * r52986;
        return r52990;
}

double f_id(double x) {
        double r52991 = 3.0;
        double r52992 = 2.0;
        double r52993 = x;
        double r52994 = r52993 * r52991;
        double r52995 = r52992 - r52994;
        double r52996 = r52991 * r52995;
        double r52997 = r52996 * r52993;
        return r52997;
}


double f_of(float x) {
        float r52998 = 6.0;
        float r52999 = 9.0;
        float r53000 = x;
        float r53001 = r52999 * r53000;
        float r53002 = r52998 - r53001;
        float r53003 = r53002 * r53000;
        return r53003;
}

double f_od(double x) {
        double r53004 = 6.0;
        double r53005 = 9.0;
        double r53006 = x;
        double r53007 = r53005 * r53006;
        double r53008 = r53004 - r53007;
        double r53009 = r53008 * r53006;
        return r53009;
}

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 r53010, r53011, r53012, r53013, r53014, r53015, r53016;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53010, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53011, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53012);
        mpfr_init(r53013);
        mpfr_init(r53014);
        mpfr_init(r53015);
        mpfr_init(r53016);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r53012, x, MPFR_RNDN);
        mpfr_mul(r53013, r53012, r53010, MPFR_RNDN);
        mpfr_sub(r53014, r53011, r53013, MPFR_RNDN);
        mpfr_mul(r53015, r53010, r53014, MPFR_RNDN);
        mpfr_mul(r53016, r53015, r53012, MPFR_RNDN);
        return mpfr_get_d(r53016, MPFR_RNDN);
}

static mpfr_t r53017, r53018, r53019, r53020, r53021, r53022;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53017, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53018, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53019);
        mpfr_init(r53020);
        mpfr_init(r53021);
        mpfr_init(r53022);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r53019, x, MPFR_RNDN);
        mpfr_mul(r53020, r53018, r53019, MPFR_RNDN);
        mpfr_sub(r53021, r53017, r53020, MPFR_RNDN);
        mpfr_mul(r53022, r53021, r53019, MPFR_RNDN);
        return mpfr_get_d(r53022, MPFR_RNDN);
}

static mpfr_t r53023, r53024, r53025, r53026, r53027, r53028;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r53023, "6.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53024, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53025);
        mpfr_init(r53026);
        mpfr_init(r53027);
        mpfr_init(r53028);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r53025, x, MPFR_RNDN);
        mpfr_mul(r53026, r53024, r53025, MPFR_RNDN);
        mpfr_sub(r53027, r53023, r53026, MPFR_RNDN);
        mpfr_mul(r53028, r53027, r53025, MPFR_RNDN);
        return mpfr_get_d(r53028, MPFR_RNDN);
}

