#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 r52940 = 3.0;
        float r52941 = x;
        float r52942 = r52941 * r52940;
        float r52943 = r52942 * r52941;
        float r52944 = 4.0;
        float r52945 = r52941 * r52944;
        float r52946 = r52943 - r52945;
        float r52947 = 1.0;
        float r52948 = r52946 + r52947;
        float r52949 = r52940 * r52948;
        return r52949;
}

double f_id(double x) {
        double r52950 = 3.0;
        double r52951 = x;
        double r52952 = r52951 * r52950;
        double r52953 = r52952 * r52951;
        double r52954 = 4.0;
        double r52955 = r52951 * r52954;
        double r52956 = r52953 - r52955;
        double r52957 = 1.0;
        double r52958 = r52956 + r52957;
        double r52959 = r52950 * r52958;
        return r52959;
}


double f_of(float x) {
        float r52960 = 9.0;
        float r52961 = x;
        float r52962 = 2;
        float r52963 = pow(r52961, r52962);
        float r52964 = r52960 * r52963;
        float r52965 = 3.0;
        float r52966 = r52964 + r52965;
        float r52967 = 12.0;
        float r52968 = r52967 * r52961;
        float r52969 = r52966 - r52968;
        return r52969;
}

double f_od(double x) {
        double r52970 = 9.0;
        double r52971 = x;
        double r52972 = 2;
        double r52973 = pow(r52971, r52972);
        double r52974 = r52970 * r52973;
        double r52975 = 3.0;
        double r52976 = r52974 + r52975;
        double r52977 = 12.0;
        double r52978 = r52977 * r52971;
        double r52979 = r52976 - r52978;
        return r52979;
}

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 r52980, r52981, r52982, r52983, r52984, r52985, r52986, r52987, r52988, r52989;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52980, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52981);
        mpfr_init(r52982);
        mpfr_init(r52983);
        mpfr_init_set_str(r52984, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52985);
        mpfr_init(r52986);
        mpfr_init_set_str(r52987, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52988);
        mpfr_init(r52989);
}

double f_im(double x) {
        ;
        mpfr_set_d(r52981, x, MPFR_RNDN);
        mpfr_mul(r52982, r52981, r52980, MPFR_RNDN);
        mpfr_mul(r52983, r52982, r52981, MPFR_RNDN);
        ;
        mpfr_mul(r52985, r52981, r52984, MPFR_RNDN);
        mpfr_sub(r52986, r52983, r52985, MPFR_RNDN);
        ;
        mpfr_add(r52988, r52986, r52987, MPFR_RNDN);
        mpfr_mul(r52989, r52980, r52988, MPFR_RNDN);
        return mpfr_get_d(r52989, MPFR_RNDN);
}

static mpfr_t r52990, r52991, r52992, r52993, r52994, r52995, r52996, r52997, r52998, r52999;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52990, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52991);
        mpfr_init_set_str(r52992, "2", 10, MPFR_RNDN);
        mpfr_init(r52993);
        mpfr_init(r52994);
        mpfr_init_set_str(r52995, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52996);
        mpfr_init_set_str(r52997, "12.0", 10, MPFR_RNDN);
        mpfr_init(r52998);
        mpfr_init(r52999);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r52991, x, MPFR_RNDN);
        ;
        mpfr_pow(r52993, r52991, r52992, MPFR_RNDN);
        mpfr_mul(r52994, r52990, r52993, MPFR_RNDN);
        ;
        mpfr_add(r52996, r52994, r52995, MPFR_RNDN);
        ;
        mpfr_mul(r52998, r52997, r52991, MPFR_RNDN);
        mpfr_sub(r52999, r52996, r52998, MPFR_RNDN);
        return mpfr_get_d(r52999, MPFR_RNDN);
}

static mpfr_t r53000, r53001, r53002, r53003, r53004, r53005, r53006, r53007, r53008, r53009;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53000, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53001);
        mpfr_init_set_str(r53002, "2", 10, MPFR_RNDN);
        mpfr_init(r53003);
        mpfr_init(r53004);
        mpfr_init_set_str(r53005, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53006);
        mpfr_init_set_str(r53007, "12.0", 10, MPFR_RNDN);
        mpfr_init(r53008);
        mpfr_init(r53009);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r53001, x, MPFR_RNDN);
        ;
        mpfr_pow(r53003, r53001, r53002, MPFR_RNDN);
        mpfr_mul(r53004, r53000, r53003, MPFR_RNDN);
        ;
        mpfr_add(r53006, r53004, r53005, MPFR_RNDN);
        ;
        mpfr_mul(r53008, r53007, r53001, MPFR_RNDN);
        mpfr_sub(r53009, r53006, r53008, MPFR_RNDN);
        return mpfr_get_d(r53009, MPFR_RNDN);
}

