#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 r55324 = x;
        float r55325 = 3.0;
        float r55326 = r55324 * r55325;
        float r55327 = r55326 * r55324;
        float r55328 = y;
        float r55329 = r55327 * r55328;
        return r55329;
}

double f_id(double x, double y) {
        double r55330 = x;
        double r55331 = 3.0;
        double r55332 = r55330 * r55331;
        double r55333 = r55332 * r55330;
        double r55334 = y;
        double r55335 = r55333 * r55334;
        return r55335;
}


double f_of(float x, float y) {
        float r55336 = x;
        float r55337 = 3.0;
        float r55338 = y;
        float r55339 = r55336 * r55338;
        float r55340 = r55337 * r55339;
        float r55341 = r55336 * r55340;
        return r55341;
}

double f_od(double x, double y) {
        double r55342 = x;
        double r55343 = 3.0;
        double r55344 = y;
        double r55345 = r55342 * r55344;
        double r55346 = r55343 * r55345;
        double r55347 = r55342 * r55346;
        return r55347;
}

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 r55348, r55349, r55350, r55351, r55352, r55353;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55348);
        mpfr_init_set_str(r55349, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55350);
        mpfr_init(r55351);
        mpfr_init(r55352);
        mpfr_init(r55353);
}

double f_im(double x, double y) {
        mpfr_set_d(r55348, x, MPFR_RNDN);
        ;
        mpfr_mul(r55350, r55348, r55349, MPFR_RNDN);
        mpfr_mul(r55351, r55350, r55348, MPFR_RNDN);
        mpfr_set_d(r55352, y, MPFR_RNDN);
        mpfr_mul(r55353, r55351, r55352, MPFR_RNDN);
        return mpfr_get_d(r55353, MPFR_RNDN);
}

static mpfr_t r55354, r55355, r55356, r55357, r55358, r55359;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55354);
        mpfr_init_set_str(r55355, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55356);
        mpfr_init(r55357);
        mpfr_init(r55358);
        mpfr_init(r55359);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55354, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55356, y, MPFR_RNDN);
        mpfr_mul(r55357, r55354, r55356, MPFR_RNDN);
        mpfr_mul(r55358, r55355, r55357, MPFR_RNDN);
        mpfr_mul(r55359, r55354, r55358, MPFR_RNDN);
        return mpfr_get_d(r55359, MPFR_RNDN);
}

static mpfr_t r55360, r55361, r55362, r55363, r55364, r55365;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55360);
        mpfr_init_set_str(r55361, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55362);
        mpfr_init(r55363);
        mpfr_init(r55364);
        mpfr_init(r55365);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55360, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55362, y, MPFR_RNDN);
        mpfr_mul(r55363, r55360, r55362, MPFR_RNDN);
        mpfr_mul(r55364, r55361, r55363, MPFR_RNDN);
        mpfr_mul(r55365, r55360, r55364, MPFR_RNDN);
        return mpfr_get_d(r55365, MPFR_RNDN);
}

