#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.Segment:$catParam from diagrams-lib-1.3.0.3, A";

double f_if(float x, float y) {
        float r55172 = x;
        float r55173 = 3.0;
        float r55174 = r55172 * r55173;
        float r55175 = r55174 * r55172;
        float r55176 = y;
        float r55177 = r55175 * r55176;
        return r55177;
}

double f_id(double x, double y) {
        double r55178 = x;
        double r55179 = 3.0;
        double r55180 = r55178 * r55179;
        double r55181 = r55180 * r55178;
        double r55182 = y;
        double r55183 = r55181 * r55182;
        return r55183;
}


double f_of(float x, float y) {
        float r55184 = x;
        float r55185 = 3.0;
        float r55186 = y;
        float r55187 = r55184 * r55186;
        float r55188 = r55185 * r55187;
        float r55189 = r55184 * r55188;
        return r55189;
}

double f_od(double x, double y) {
        double r55190 = x;
        double r55191 = 3.0;
        double r55192 = y;
        double r55193 = r55190 * r55192;
        double r55194 = r55191 * r55193;
        double r55195 = r55190 * r55194;
        return r55195;
}

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 r55196, r55197, r55198, r55199, r55200, r55201;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55196);
        mpfr_init_set_str(r55197, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55198);
        mpfr_init(r55199);
        mpfr_init(r55200);
        mpfr_init(r55201);
}

double f_im(double x, double y) {
        mpfr_set_d(r55196, x, MPFR_RNDN);
        ;
        mpfr_mul(r55198, r55196, r55197, MPFR_RNDN);
        mpfr_mul(r55199, r55198, r55196, MPFR_RNDN);
        mpfr_set_d(r55200, y, MPFR_RNDN);
        mpfr_mul(r55201, r55199, r55200, MPFR_RNDN);
        return mpfr_get_d(r55201, MPFR_RNDN);
}

static mpfr_t r55202, r55203, r55204, r55205, r55206, r55207;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55202);
        mpfr_init_set_str(r55203, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55204);
        mpfr_init(r55205);
        mpfr_init(r55206);
        mpfr_init(r55207);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55202, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55204, y, MPFR_RNDN);
        mpfr_mul(r55205, r55202, r55204, MPFR_RNDN);
        mpfr_mul(r55206, r55203, r55205, MPFR_RNDN);
        mpfr_mul(r55207, r55202, r55206, MPFR_RNDN);
        return mpfr_get_d(r55207, MPFR_RNDN);
}

static mpfr_t r55208, r55209, r55210, r55211, r55212, r55213;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55208);
        mpfr_init_set_str(r55209, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55210);
        mpfr_init(r55211);
        mpfr_init(r55212);
        mpfr_init(r55213);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55208, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55210, y, MPFR_RNDN);
        mpfr_mul(r55211, r55208, r55210, MPFR_RNDN);
        mpfr_mul(r55212, r55209, r55211, MPFR_RNDN);
        mpfr_mul(r55213, r55208, r55212, MPFR_RNDN);
        return mpfr_get_d(r55213, MPFR_RNDN);
}

