#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 r53278 = 2.0;
        float r53279 = x;
        float r53280 = y;
        float r53281 = r53279 * r53280;
        float r53282 = z;
        float r53283 = t;
        float r53284 = r53282 * r53283;
        float r53285 = r53281 + r53284;
        float r53286 = a;
        float r53287 = b;
        float r53288 = c;
        float r53289 = r53287 * r53288;
        float r53290 = r53286 + r53289;
        float r53291 = r53290 * r53288;
        float r53292 = i;
        float r53293 = r53291 * r53292;
        float r53294 = r53285 - r53293;
        float r53295 = r53278 * r53294;
        return r53295;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r53296 = 2.0;
        double r53297 = x;
        double r53298 = y;
        double r53299 = r53297 * r53298;
        double r53300 = z;
        double r53301 = t;
        double r53302 = r53300 * r53301;
        double r53303 = r53299 + r53302;
        double r53304 = a;
        double r53305 = b;
        double r53306 = c;
        double r53307 = r53305 * r53306;
        double r53308 = r53304 + r53307;
        double r53309 = r53308 * r53306;
        double r53310 = i;
        double r53311 = r53309 * r53310;
        double r53312 = r53303 - r53311;
        double r53313 = r53296 * r53312;
        return r53313;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r53314 = 2.0;
        float r53315 = t;
        float r53316 = z;
        float r53317 = r53315 * r53316;
        float r53318 = y;
        float r53319 = x;
        float r53320 = r53318 * r53319;
        float r53321 = r53317 + r53320;
        float r53322 = i;
        float r53323 = c;
        float r53324 = r53322 * r53323;
        float r53325 = b;
        float r53326 = r53325 * r53323;
        float r53327 = a;
        float r53328 = r53326 + r53327;
        float r53329 = r53324 * r53328;
        float r53330 = r53321 - r53329;
        float r53331 = r53314 * r53330;
        return r53331;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r53332 = 2.0;
        double r53333 = t;
        double r53334 = z;
        double r53335 = r53333 * r53334;
        double r53336 = y;
        double r53337 = x;
        double r53338 = r53336 * r53337;
        double r53339 = r53335 + r53338;
        double r53340 = i;
        double r53341 = c;
        double r53342 = r53340 * r53341;
        double r53343 = b;
        double r53344 = r53343 * r53341;
        double r53345 = a;
        double r53346 = r53344 + r53345;
        double r53347 = r53342 * r53346;
        double r53348 = r53339 - r53347;
        double r53349 = r53332 * r53348;
        return r53349;
}

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 r53350, r53351, r53352, r53353, r53354, r53355, r53356, r53357, r53358, r53359, r53360, r53361, r53362, r53363, r53364, r53365, r53366, r53367;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53350, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53351);
        mpfr_init(r53352);
        mpfr_init(r53353);
        mpfr_init(r53354);
        mpfr_init(r53355);
        mpfr_init(r53356);
        mpfr_init(r53357);
        mpfr_init(r53358);
        mpfr_init(r53359);
        mpfr_init(r53360);
        mpfr_init(r53361);
        mpfr_init(r53362);
        mpfr_init(r53363);
        mpfr_init(r53364);
        mpfr_init(r53365);
        mpfr_init(r53366);
        mpfr_init(r53367);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53351, x, MPFR_RNDN);
        mpfr_set_d(r53352, y, MPFR_RNDN);
        mpfr_mul(r53353, r53351, r53352, MPFR_RNDN);
        mpfr_set_d(r53354, z, MPFR_RNDN);
        mpfr_set_d(r53355, t, MPFR_RNDN);
        mpfr_mul(r53356, r53354, r53355, MPFR_RNDN);
        mpfr_add(r53357, r53353, r53356, MPFR_RNDN);
        mpfr_set_d(r53358, a, MPFR_RNDN);
        mpfr_set_d(r53359, b, MPFR_RNDN);
        mpfr_set_d(r53360, c, MPFR_RNDN);
        mpfr_mul(r53361, r53359, r53360, MPFR_RNDN);
        mpfr_add(r53362, r53358, r53361, MPFR_RNDN);
        mpfr_mul(r53363, r53362, r53360, MPFR_RNDN);
        mpfr_set_d(r53364, i, MPFR_RNDN);
        mpfr_mul(r53365, r53363, r53364, MPFR_RNDN);
        mpfr_sub(r53366, r53357, r53365, MPFR_RNDN);
        mpfr_mul(r53367, r53350, r53366, MPFR_RNDN);
        return mpfr_get_d(r53367, MPFR_RNDN);
}

static mpfr_t r53368, r53369, r53370, r53371, r53372, r53373, r53374, r53375, r53376, r53377, r53378, r53379, r53380, r53381, r53382, r53383, r53384, r53385;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53368, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53369);
        mpfr_init(r53370);
        mpfr_init(r53371);
        mpfr_init(r53372);
        mpfr_init(r53373);
        mpfr_init(r53374);
        mpfr_init(r53375);
        mpfr_init(r53376);
        mpfr_init(r53377);
        mpfr_init(r53378);
        mpfr_init(r53379);
        mpfr_init(r53380);
        mpfr_init(r53381);
        mpfr_init(r53382);
        mpfr_init(r53383);
        mpfr_init(r53384);
        mpfr_init(r53385);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53369, t, MPFR_RNDN);
        mpfr_set_d(r53370, z, MPFR_RNDN);
        mpfr_mul(r53371, r53369, r53370, MPFR_RNDN);
        mpfr_set_d(r53372, y, MPFR_RNDN);
        mpfr_set_d(r53373, x, MPFR_RNDN);
        mpfr_mul(r53374, r53372, r53373, MPFR_RNDN);
        mpfr_add(r53375, r53371, r53374, MPFR_RNDN);
        mpfr_set_d(r53376, i, MPFR_RNDN);
        mpfr_set_d(r53377, c, MPFR_RNDN);
        mpfr_mul(r53378, r53376, r53377, MPFR_RNDN);
        mpfr_set_d(r53379, b, MPFR_RNDN);
        mpfr_mul(r53380, r53379, r53377, MPFR_RNDN);
        mpfr_set_d(r53381, a, MPFR_RNDN);
        mpfr_add(r53382, r53380, r53381, MPFR_RNDN);
        mpfr_mul(r53383, r53378, r53382, MPFR_RNDN);
        mpfr_sub(r53384, r53375, r53383, MPFR_RNDN);
        mpfr_mul(r53385, r53368, r53384, MPFR_RNDN);
        return mpfr_get_d(r53385, MPFR_RNDN);
}

static mpfr_t r53386, r53387, r53388, r53389, r53390, r53391, r53392, r53393, r53394, r53395, r53396, r53397, r53398, r53399, r53400, r53401, r53402, r53403;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53386, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53387);
        mpfr_init(r53388);
        mpfr_init(r53389);
        mpfr_init(r53390);
        mpfr_init(r53391);
        mpfr_init(r53392);
        mpfr_init(r53393);
        mpfr_init(r53394);
        mpfr_init(r53395);
        mpfr_init(r53396);
        mpfr_init(r53397);
        mpfr_init(r53398);
        mpfr_init(r53399);
        mpfr_init(r53400);
        mpfr_init(r53401);
        mpfr_init(r53402);
        mpfr_init(r53403);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53387, t, MPFR_RNDN);
        mpfr_set_d(r53388, z, MPFR_RNDN);
        mpfr_mul(r53389, r53387, r53388, MPFR_RNDN);
        mpfr_set_d(r53390, y, MPFR_RNDN);
        mpfr_set_d(r53391, x, MPFR_RNDN);
        mpfr_mul(r53392, r53390, r53391, MPFR_RNDN);
        mpfr_add(r53393, r53389, r53392, MPFR_RNDN);
        mpfr_set_d(r53394, i, MPFR_RNDN);
        mpfr_set_d(r53395, c, MPFR_RNDN);
        mpfr_mul(r53396, r53394, r53395, MPFR_RNDN);
        mpfr_set_d(r53397, b, MPFR_RNDN);
        mpfr_mul(r53398, r53397, r53395, MPFR_RNDN);
        mpfr_set_d(r53399, a, MPFR_RNDN);
        mpfr_add(r53400, r53398, r53399, MPFR_RNDN);
        mpfr_mul(r53401, r53396, r53400, MPFR_RNDN);
        mpfr_sub(r53402, r53393, r53401, MPFR_RNDN);
        mpfr_mul(r53403, r53386, r53402, MPFR_RNDN);
        return mpfr_get_d(r53403, MPFR_RNDN);
}

