#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 r55028 = x;
        float r55029 = 3.0;
        float r55030 = r55028 * r55029;
        float r55031 = r55030 * r55028;
        float r55032 = y;
        float r55033 = r55031 * r55032;
        return r55033;
}

double f_id(double x, double y) {
        double r55034 = x;
        double r55035 = 3.0;
        double r55036 = r55034 * r55035;
        double r55037 = r55036 * r55034;
        double r55038 = y;
        double r55039 = r55037 * r55038;
        return r55039;
}


double f_of(float x, float y) {
        float r55040 = x;
        float r55041 = 3.0;
        float r55042 = y;
        float r55043 = r55040 * r55042;
        float r55044 = r55041 * r55043;
        float r55045 = r55040 * r55044;
        return r55045;
}

double f_od(double x, double y) {
        double r55046 = x;
        double r55047 = 3.0;
        double r55048 = y;
        double r55049 = r55046 * r55048;
        double r55050 = r55047 * r55049;
        double r55051 = r55046 * r55050;
        return r55051;
}

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 r55052, r55053, r55054, r55055, r55056, r55057;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55052);
        mpfr_init_set_str(r55053, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55054);
        mpfr_init(r55055);
        mpfr_init(r55056);
        mpfr_init(r55057);
}

double f_im(double x, double y) {
        mpfr_set_d(r55052, x, MPFR_RNDN);
        ;
        mpfr_mul(r55054, r55052, r55053, MPFR_RNDN);
        mpfr_mul(r55055, r55054, r55052, MPFR_RNDN);
        mpfr_set_d(r55056, y, MPFR_RNDN);
        mpfr_mul(r55057, r55055, r55056, MPFR_RNDN);
        return mpfr_get_d(r55057, MPFR_RNDN);
}

static mpfr_t r55058, r55059, r55060, r55061, r55062, r55063;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55058);
        mpfr_init_set_str(r55059, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55060);
        mpfr_init(r55061);
        mpfr_init(r55062);
        mpfr_init(r55063);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55058, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55060, y, MPFR_RNDN);
        mpfr_mul(r55061, r55058, r55060, MPFR_RNDN);
        mpfr_mul(r55062, r55059, r55061, MPFR_RNDN);
        mpfr_mul(r55063, r55058, r55062, MPFR_RNDN);
        return mpfr_get_d(r55063, MPFR_RNDN);
}

static mpfr_t r55064, r55065, r55066, r55067, r55068, r55069;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55064);
        mpfr_init_set_str(r55065, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55066);
        mpfr_init(r55067);
        mpfr_init(r55068);
        mpfr_init(r55069);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55064, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55066, y, MPFR_RNDN);
        mpfr_mul(r55067, r55064, r55066, MPFR_RNDN);
        mpfr_mul(r55068, r55065, r55067, MPFR_RNDN);
        mpfr_mul(r55069, r55064, r55068, MPFR_RNDN);
        return mpfr_get_d(r55069, MPFR_RNDN);
}

