#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 r55102 = x;
        float r55103 = 3.0;
        float r55104 = r55102 * r55103;
        float r55105 = r55104 * r55102;
        float r55106 = y;
        float r55107 = r55105 * r55106;
        return r55107;
}

double f_id(double x, double y) {
        double r55108 = x;
        double r55109 = 3.0;
        double r55110 = r55108 * r55109;
        double r55111 = r55110 * r55108;
        double r55112 = y;
        double r55113 = r55111 * r55112;
        return r55113;
}


double f_of(float x, float y) {
        float r55114 = x;
        float r55115 = 3.0;
        float r55116 = y;
        float r55117 = r55114 * r55116;
        float r55118 = r55115 * r55117;
        float r55119 = r55114 * r55118;
        return r55119;
}

double f_od(double x, double y) {
        double r55120 = x;
        double r55121 = 3.0;
        double r55122 = y;
        double r55123 = r55120 * r55122;
        double r55124 = r55121 * r55123;
        double r55125 = r55120 * r55124;
        return r55125;
}

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 r55126, r55127, r55128, r55129, r55130, r55131;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55126);
        mpfr_init_set_str(r55127, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55128);
        mpfr_init(r55129);
        mpfr_init(r55130);
        mpfr_init(r55131);
}

double f_im(double x, double y) {
        mpfr_set_d(r55126, x, MPFR_RNDN);
        ;
        mpfr_mul(r55128, r55126, r55127, MPFR_RNDN);
        mpfr_mul(r55129, r55128, r55126, MPFR_RNDN);
        mpfr_set_d(r55130, y, MPFR_RNDN);
        mpfr_mul(r55131, r55129, r55130, MPFR_RNDN);
        return mpfr_get_d(r55131, MPFR_RNDN);
}

static mpfr_t r55132, r55133, r55134, r55135, r55136, r55137;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55132);
        mpfr_init_set_str(r55133, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55134);
        mpfr_init(r55135);
        mpfr_init(r55136);
        mpfr_init(r55137);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55132, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55134, y, MPFR_RNDN);
        mpfr_mul(r55135, r55132, r55134, MPFR_RNDN);
        mpfr_mul(r55136, r55133, r55135, MPFR_RNDN);
        mpfr_mul(r55137, r55132, r55136, MPFR_RNDN);
        return mpfr_get_d(r55137, MPFR_RNDN);
}

static mpfr_t r55138, r55139, r55140, r55141, r55142, r55143;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55138);
        mpfr_init_set_str(r55139, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55140);
        mpfr_init(r55141);
        mpfr_init(r55142);
        mpfr_init(r55143);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55138, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55140, y, MPFR_RNDN);
        mpfr_mul(r55141, r55138, r55140, MPFR_RNDN);
        mpfr_mul(r55142, r55139, r55141, MPFR_RNDN);
        mpfr_mul(r55143, r55138, r55142, MPFR_RNDN);
        return mpfr_get_d(r55143, MPFR_RNDN);
}

