#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 r52896 = 2.0;
        float r52897 = x;
        float r52898 = y;
        float r52899 = r52897 * r52898;
        float r52900 = z;
        float r52901 = t;
        float r52902 = r52900 * r52901;
        float r52903 = r52899 + r52902;
        float r52904 = a;
        float r52905 = b;
        float r52906 = c;
        float r52907 = r52905 * r52906;
        float r52908 = r52904 + r52907;
        float r52909 = r52908 * r52906;
        float r52910 = i;
        float r52911 = r52909 * r52910;
        float r52912 = r52903 - r52911;
        float r52913 = r52896 * r52912;
        return r52913;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r52914 = 2.0;
        double r52915 = x;
        double r52916 = y;
        double r52917 = r52915 * r52916;
        double r52918 = z;
        double r52919 = t;
        double r52920 = r52918 * r52919;
        double r52921 = r52917 + r52920;
        double r52922 = a;
        double r52923 = b;
        double r52924 = c;
        double r52925 = r52923 * r52924;
        double r52926 = r52922 + r52925;
        double r52927 = r52926 * r52924;
        double r52928 = i;
        double r52929 = r52927 * r52928;
        double r52930 = r52921 - r52929;
        double r52931 = r52914 * r52930;
        return r52931;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r52932 = 2.0;
        float r52933 = t;
        float r52934 = z;
        float r52935 = r52933 * r52934;
        float r52936 = y;
        float r52937 = x;
        float r52938 = r52936 * r52937;
        float r52939 = r52935 + r52938;
        float r52940 = i;
        float r52941 = c;
        float r52942 = r52940 * r52941;
        float r52943 = b;
        float r52944 = r52943 * r52941;
        float r52945 = a;
        float r52946 = r52944 + r52945;
        float r52947 = r52942 * r52946;
        float r52948 = r52939 - r52947;
        float r52949 = r52932 * r52948;
        return r52949;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r52950 = 2.0;
        double r52951 = t;
        double r52952 = z;
        double r52953 = r52951 * r52952;
        double r52954 = y;
        double r52955 = x;
        double r52956 = r52954 * r52955;
        double r52957 = r52953 + r52956;
        double r52958 = i;
        double r52959 = c;
        double r52960 = r52958 * r52959;
        double r52961 = b;
        double r52962 = r52961 * r52959;
        double r52963 = a;
        double r52964 = r52962 + r52963;
        double r52965 = r52960 * r52964;
        double r52966 = r52957 - r52965;
        double r52967 = r52950 * r52966;
        return r52967;
}

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 r52968, r52969, r52970, r52971, r52972, r52973, r52974, r52975, r52976, r52977, r52978, r52979, r52980, r52981, r52982, r52983, r52984, r52985;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52968, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52969);
        mpfr_init(r52970);
        mpfr_init(r52971);
        mpfr_init(r52972);
        mpfr_init(r52973);
        mpfr_init(r52974);
        mpfr_init(r52975);
        mpfr_init(r52976);
        mpfr_init(r52977);
        mpfr_init(r52978);
        mpfr_init(r52979);
        mpfr_init(r52980);
        mpfr_init(r52981);
        mpfr_init(r52982);
        mpfr_init(r52983);
        mpfr_init(r52984);
        mpfr_init(r52985);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52969, x, MPFR_RNDN);
        mpfr_set_d(r52970, y, MPFR_RNDN);
        mpfr_mul(r52971, r52969, r52970, MPFR_RNDN);
        mpfr_set_d(r52972, z, MPFR_RNDN);
        mpfr_set_d(r52973, t, MPFR_RNDN);
        mpfr_mul(r52974, r52972, r52973, MPFR_RNDN);
        mpfr_add(r52975, r52971, r52974, MPFR_RNDN);
        mpfr_set_d(r52976, a, MPFR_RNDN);
        mpfr_set_d(r52977, b, MPFR_RNDN);
        mpfr_set_d(r52978, c, MPFR_RNDN);
        mpfr_mul(r52979, r52977, r52978, MPFR_RNDN);
        mpfr_add(r52980, r52976, r52979, MPFR_RNDN);
        mpfr_mul(r52981, r52980, r52978, MPFR_RNDN);
        mpfr_set_d(r52982, i, MPFR_RNDN);
        mpfr_mul(r52983, r52981, r52982, MPFR_RNDN);
        mpfr_sub(r52984, r52975, r52983, MPFR_RNDN);
        mpfr_mul(r52985, r52968, r52984, MPFR_RNDN);
        return mpfr_get_d(r52985, MPFR_RNDN);
}

static mpfr_t r52986, r52987, r52988, r52989, r52990, r52991, r52992, r52993, r52994, r52995, r52996, r52997, r52998, r52999, r53000, r53001, r53002, r53003;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52986, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52987);
        mpfr_init(r52988);
        mpfr_init(r52989);
        mpfr_init(r52990);
        mpfr_init(r52991);
        mpfr_init(r52992);
        mpfr_init(r52993);
        mpfr_init(r52994);
        mpfr_init(r52995);
        mpfr_init(r52996);
        mpfr_init(r52997);
        mpfr_init(r52998);
        mpfr_init(r52999);
        mpfr_init(r53000);
        mpfr_init(r53001);
        mpfr_init(r53002);
        mpfr_init(r53003);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52987, t, MPFR_RNDN);
        mpfr_set_d(r52988, z, MPFR_RNDN);
        mpfr_mul(r52989, r52987, r52988, MPFR_RNDN);
        mpfr_set_d(r52990, y, MPFR_RNDN);
        mpfr_set_d(r52991, x, MPFR_RNDN);
        mpfr_mul(r52992, r52990, r52991, MPFR_RNDN);
        mpfr_add(r52993, r52989, r52992, MPFR_RNDN);
        mpfr_set_d(r52994, i, MPFR_RNDN);
        mpfr_set_d(r52995, c, MPFR_RNDN);
        mpfr_mul(r52996, r52994, r52995, MPFR_RNDN);
        mpfr_set_d(r52997, b, MPFR_RNDN);
        mpfr_mul(r52998, r52997, r52995, MPFR_RNDN);
        mpfr_set_d(r52999, a, MPFR_RNDN);
        mpfr_add(r53000, r52998, r52999, MPFR_RNDN);
        mpfr_mul(r53001, r52996, r53000, MPFR_RNDN);
        mpfr_sub(r53002, r52993, r53001, MPFR_RNDN);
        mpfr_mul(r53003, r52986, r53002, MPFR_RNDN);
        return mpfr_get_d(r53003, MPFR_RNDN);
}

static mpfr_t r53004, r53005, r53006, r53007, r53008, r53009, r53010, r53011, r53012, r53013, r53014, r53015, r53016, r53017, r53018, r53019, r53020, r53021;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53004, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53005);
        mpfr_init(r53006);
        mpfr_init(r53007);
        mpfr_init(r53008);
        mpfr_init(r53009);
        mpfr_init(r53010);
        mpfr_init(r53011);
        mpfr_init(r53012);
        mpfr_init(r53013);
        mpfr_init(r53014);
        mpfr_init(r53015);
        mpfr_init(r53016);
        mpfr_init(r53017);
        mpfr_init(r53018);
        mpfr_init(r53019);
        mpfr_init(r53020);
        mpfr_init(r53021);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r53005, t, MPFR_RNDN);
        mpfr_set_d(r53006, z, MPFR_RNDN);
        mpfr_mul(r53007, r53005, r53006, MPFR_RNDN);
        mpfr_set_d(r53008, y, MPFR_RNDN);
        mpfr_set_d(r53009, x, MPFR_RNDN);
        mpfr_mul(r53010, r53008, r53009, MPFR_RNDN);
        mpfr_add(r53011, r53007, r53010, MPFR_RNDN);
        mpfr_set_d(r53012, i, MPFR_RNDN);
        mpfr_set_d(r53013, c, MPFR_RNDN);
        mpfr_mul(r53014, r53012, r53013, MPFR_RNDN);
        mpfr_set_d(r53015, b, MPFR_RNDN);
        mpfr_mul(r53016, r53015, r53013, MPFR_RNDN);
        mpfr_set_d(r53017, a, MPFR_RNDN);
        mpfr_add(r53018, r53016, r53017, MPFR_RNDN);
        mpfr_mul(r53019, r53014, r53018, MPFR_RNDN);
        mpfr_sub(r53020, r53011, r53019, MPFR_RNDN);
        mpfr_mul(r53021, r53004, r53020, MPFR_RNDN);
        return mpfr_get_d(r53021, MPFR_RNDN);
}

