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

char *name = "Diagrams.ThreeD.Shapes:frustum from diagrams-lib-1.3.0.3, A";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r53118 = 2.0;
        float r53119 = x;
        float r53120 = y;
        float r53121 = r53119 * r53120;
        float r53122 = z;
        float r53123 = t;
        float r53124 = r53122 * r53123;
        float r53125 = r53121 + r53124;
        float r53126 = a;
        float r53127 = b;
        float r53128 = c;
        float r53129 = r53127 * r53128;
        float r53130 = r53126 + r53129;
        float r53131 = r53130 * r53128;
        float r53132 = i;
        float r53133 = r53131 * r53132;
        float r53134 = r53125 - r53133;
        float r53135 = r53118 * r53134;
        return r53135;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r53136 = 2.0;
        double r53137 = x;
        double r53138 = y;
        double r53139 = r53137 * r53138;
        double r53140 = z;
        double r53141 = t;
        double r53142 = r53140 * r53141;
        double r53143 = r53139 + r53142;
        double r53144 = a;
        double r53145 = b;
        double r53146 = c;
        double r53147 = r53145 * r53146;
        double r53148 = r53144 + r53147;
        double r53149 = r53148 * r53146;
        double r53150 = i;
        double r53151 = r53149 * r53150;
        double r53152 = r53143 - r53151;
        double r53153 = r53136 * r53152;
        return r53153;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r53154 = 2.0;
        float r53155 = t;
        float r53156 = z;
        float r53157 = r53155 * r53156;
        float r53158 = y;
        float r53159 = x;
        float r53160 = r53158 * r53159;
        float r53161 = r53157 + r53160;
        float r53162 = i;
        float r53163 = c;
        float r53164 = r53162 * r53163;
        float r53165 = b;
        float r53166 = r53165 * r53163;
        float r53167 = a;
        float r53168 = r53166 + r53167;
        float r53169 = r53164 * r53168;
        float r53170 = r53161 - r53169;
        float r53171 = r53154 * r53170;
        return r53171;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r53172 = 2.0;
        double r53173 = t;
        double r53174 = z;
        double r53175 = r53173 * r53174;
        double r53176 = y;
        double r53177 = x;
        double r53178 = r53176 * r53177;
        double r53179 = r53175 + r53178;
        double r53180 = i;
        double r53181 = c;
        double r53182 = r53180 * r53181;
        double r53183 = b;
        double r53184 = r53183 * r53181;
        double r53185 = a;
        double r53186 = r53184 + r53185;
        double r53187 = r53182 * r53186;
        double r53188 = r53179 - r53187;
        double r53189 = r53172 * r53188;
        return r53189;
}

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 r53190, r53191, r53192, r53193, r53194, r53195, r53196, r53197, r53198, r53199, r53200, r53201, r53202, r53203, r53204, r53205, r53206, r53207;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53190, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53191);
        mpfr_init(r53192);
        mpfr_init(r53193);
        mpfr_init(r53194);
        mpfr_init(r53195);
        mpfr_init(r53196);
        mpfr_init(r53197);
        mpfr_init(r53198);
        mpfr_init(r53199);
        mpfr_init(r53200);
        mpfr_init(r53201);
        mpfr_init(r53202);
        mpfr_init(r53203);
        mpfr_init(r53204);
        mpfr_init(r53205);
        mpfr_init(r53206);
        mpfr_init(r53207);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53191, x, MPFR_RNDN);
        mpfr_set_d(r53192, y, MPFR_RNDN);
        mpfr_mul(r53193, r53191, r53192, MPFR_RNDN);
        mpfr_set_d(r53194, z, MPFR_RNDN);
        mpfr_set_d(r53195, t, MPFR_RNDN);
        mpfr_mul(r53196, r53194, r53195, MPFR_RNDN);
        mpfr_add(r53197, r53193, r53196, MPFR_RNDN);
        mpfr_set_d(r53198, a, MPFR_RNDN);
        mpfr_set_d(r53199, b, MPFR_RNDN);
        mpfr_set_d(r53200, c, MPFR_RNDN);
        mpfr_mul(r53201, r53199, r53200, MPFR_RNDN);
        mpfr_add(r53202, r53198, r53201, MPFR_RNDN);
        mpfr_mul(r53203, r53202, r53200, MPFR_RNDN);
        mpfr_set_d(r53204, i, MPFR_RNDN);
        mpfr_mul(r53205, r53203, r53204, MPFR_RNDN);
        mpfr_sub(r53206, r53197, r53205, MPFR_RNDN);
        mpfr_mul(r53207, r53190, r53206, MPFR_RNDN);
        return mpfr_get_d(r53207, MPFR_RNDN);
}

static mpfr_t r53208, r53209, r53210, r53211, r53212, r53213, r53214, r53215, r53216, r53217, r53218, r53219, r53220, r53221, r53222, r53223, r53224, r53225;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53208, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53209);
        mpfr_init(r53210);
        mpfr_init(r53211);
        mpfr_init(r53212);
        mpfr_init(r53213);
        mpfr_init(r53214);
        mpfr_init(r53215);
        mpfr_init(r53216);
        mpfr_init(r53217);
        mpfr_init(r53218);
        mpfr_init(r53219);
        mpfr_init(r53220);
        mpfr_init(r53221);
        mpfr_init(r53222);
        mpfr_init(r53223);
        mpfr_init(r53224);
        mpfr_init(r53225);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53209, t, MPFR_RNDN);
        mpfr_set_d(r53210, z, MPFR_RNDN);
        mpfr_mul(r53211, r53209, r53210, MPFR_RNDN);
        mpfr_set_d(r53212, y, MPFR_RNDN);
        mpfr_set_d(r53213, x, MPFR_RNDN);
        mpfr_mul(r53214, r53212, r53213, MPFR_RNDN);
        mpfr_add(r53215, r53211, r53214, MPFR_RNDN);
        mpfr_set_d(r53216, i, MPFR_RNDN);
        mpfr_set_d(r53217, c, MPFR_RNDN);
        mpfr_mul(r53218, r53216, r53217, MPFR_RNDN);
        mpfr_set_d(r53219, b, MPFR_RNDN);
        mpfr_mul(r53220, r53219, r53217, MPFR_RNDN);
        mpfr_set_d(r53221, a, MPFR_RNDN);
        mpfr_add(r53222, r53220, r53221, MPFR_RNDN);
        mpfr_mul(r53223, r53218, r53222, MPFR_RNDN);
        mpfr_sub(r53224, r53215, r53223, MPFR_RNDN);
        mpfr_mul(r53225, r53208, r53224, MPFR_RNDN);
        return mpfr_get_d(r53225, MPFR_RNDN);
}

static mpfr_t r53226, r53227, r53228, r53229, r53230, r53231, r53232, r53233, r53234, r53235, r53236, r53237, r53238, r53239, r53240, r53241, r53242, r53243;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53226, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53227);
        mpfr_init(r53228);
        mpfr_init(r53229);
        mpfr_init(r53230);
        mpfr_init(r53231);
        mpfr_init(r53232);
        mpfr_init(r53233);
        mpfr_init(r53234);
        mpfr_init(r53235);
        mpfr_init(r53236);
        mpfr_init(r53237);
        mpfr_init(r53238);
        mpfr_init(r53239);
        mpfr_init(r53240);
        mpfr_init(r53241);
        mpfr_init(r53242);
        mpfr_init(r53243);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53227, t, MPFR_RNDN);
        mpfr_set_d(r53228, z, MPFR_RNDN);
        mpfr_mul(r53229, r53227, r53228, MPFR_RNDN);
        mpfr_set_d(r53230, y, MPFR_RNDN);
        mpfr_set_d(r53231, x, MPFR_RNDN);
        mpfr_mul(r53232, r53230, r53231, MPFR_RNDN);
        mpfr_add(r53233, r53229, r53232, MPFR_RNDN);
        mpfr_set_d(r53234, i, MPFR_RNDN);
        mpfr_set_d(r53235, c, MPFR_RNDN);
        mpfr_mul(r53236, r53234, r53235, MPFR_RNDN);
        mpfr_set_d(r53237, b, MPFR_RNDN);
        mpfr_mul(r53238, r53237, r53235, MPFR_RNDN);
        mpfr_set_d(r53239, a, MPFR_RNDN);
        mpfr_add(r53240, r53238, r53239, MPFR_RNDN);
        mpfr_mul(r53241, r53236, r53240, MPFR_RNDN);
        mpfr_sub(r53242, r53233, r53241, MPFR_RNDN);
        mpfr_mul(r53243, r53226, r53242, MPFR_RNDN);
        return mpfr_get_d(r53243, MPFR_RNDN);
}

