#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 r52858 = 2.0;
        float r52859 = x;
        float r52860 = y;
        float r52861 = r52859 * r52860;
        float r52862 = z;
        float r52863 = t;
        float r52864 = r52862 * r52863;
        float r52865 = r52861 + r52864;
        float r52866 = a;
        float r52867 = b;
        float r52868 = c;
        float r52869 = r52867 * r52868;
        float r52870 = r52866 + r52869;
        float r52871 = r52870 * r52868;
        float r52872 = i;
        float r52873 = r52871 * r52872;
        float r52874 = r52865 - r52873;
        float r52875 = r52858 * r52874;
        return r52875;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r52876 = 2.0;
        double r52877 = x;
        double r52878 = y;
        double r52879 = r52877 * r52878;
        double r52880 = z;
        double r52881 = t;
        double r52882 = r52880 * r52881;
        double r52883 = r52879 + r52882;
        double r52884 = a;
        double r52885 = b;
        double r52886 = c;
        double r52887 = r52885 * r52886;
        double r52888 = r52884 + r52887;
        double r52889 = r52888 * r52886;
        double r52890 = i;
        double r52891 = r52889 * r52890;
        double r52892 = r52883 - r52891;
        double r52893 = r52876 * r52892;
        return r52893;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r52894 = 2.0;
        float r52895 = t;
        float r52896 = z;
        float r52897 = r52895 * r52896;
        float r52898 = y;
        float r52899 = x;
        float r52900 = r52898 * r52899;
        float r52901 = r52897 + r52900;
        float r52902 = i;
        float r52903 = c;
        float r52904 = r52902 * r52903;
        float r52905 = b;
        float r52906 = r52905 * r52903;
        float r52907 = a;
        float r52908 = r52906 + r52907;
        float r52909 = r52904 * r52908;
        float r52910 = r52901 - r52909;
        float r52911 = r52894 * r52910;
        return r52911;
}

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

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 r52930, r52931, r52932, r52933, r52934, r52935, r52936, r52937, r52938, r52939, r52940, r52941, r52942, r52943, r52944, r52945, r52946, r52947;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52930, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52931);
        mpfr_init(r52932);
        mpfr_init(r52933);
        mpfr_init(r52934);
        mpfr_init(r52935);
        mpfr_init(r52936);
        mpfr_init(r52937);
        mpfr_init(r52938);
        mpfr_init(r52939);
        mpfr_init(r52940);
        mpfr_init(r52941);
        mpfr_init(r52942);
        mpfr_init(r52943);
        mpfr_init(r52944);
        mpfr_init(r52945);
        mpfr_init(r52946);
        mpfr_init(r52947);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52931, x, MPFR_RNDN);
        mpfr_set_d(r52932, y, MPFR_RNDN);
        mpfr_mul(r52933, r52931, r52932, MPFR_RNDN);
        mpfr_set_d(r52934, z, MPFR_RNDN);
        mpfr_set_d(r52935, t, MPFR_RNDN);
        mpfr_mul(r52936, r52934, r52935, MPFR_RNDN);
        mpfr_add(r52937, r52933, r52936, MPFR_RNDN);
        mpfr_set_d(r52938, a, MPFR_RNDN);
        mpfr_set_d(r52939, b, MPFR_RNDN);
        mpfr_set_d(r52940, c, MPFR_RNDN);
        mpfr_mul(r52941, r52939, r52940, MPFR_RNDN);
        mpfr_add(r52942, r52938, r52941, MPFR_RNDN);
        mpfr_mul(r52943, r52942, r52940, MPFR_RNDN);
        mpfr_set_d(r52944, i, MPFR_RNDN);
        mpfr_mul(r52945, r52943, r52944, MPFR_RNDN);
        mpfr_sub(r52946, r52937, r52945, MPFR_RNDN);
        mpfr_mul(r52947, r52930, r52946, MPFR_RNDN);
        return mpfr_get_d(r52947, MPFR_RNDN);
}

static mpfr_t r52948, r52949, r52950, r52951, r52952, r52953, r52954, r52955, r52956, r52957, r52958, r52959, r52960, r52961, r52962, r52963, r52964, r52965;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52948, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52949);
        mpfr_init(r52950);
        mpfr_init(r52951);
        mpfr_init(r52952);
        mpfr_init(r52953);
        mpfr_init(r52954);
        mpfr_init(r52955);
        mpfr_init(r52956);
        mpfr_init(r52957);
        mpfr_init(r52958);
        mpfr_init(r52959);
        mpfr_init(r52960);
        mpfr_init(r52961);
        mpfr_init(r52962);
        mpfr_init(r52963);
        mpfr_init(r52964);
        mpfr_init(r52965);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52949, t, MPFR_RNDN);
        mpfr_set_d(r52950, z, MPFR_RNDN);
        mpfr_mul(r52951, r52949, r52950, MPFR_RNDN);
        mpfr_set_d(r52952, y, MPFR_RNDN);
        mpfr_set_d(r52953, x, MPFR_RNDN);
        mpfr_mul(r52954, r52952, r52953, MPFR_RNDN);
        mpfr_add(r52955, r52951, r52954, MPFR_RNDN);
        mpfr_set_d(r52956, i, MPFR_RNDN);
        mpfr_set_d(r52957, c, MPFR_RNDN);
        mpfr_mul(r52958, r52956, r52957, MPFR_RNDN);
        mpfr_set_d(r52959, b, MPFR_RNDN);
        mpfr_mul(r52960, r52959, r52957, MPFR_RNDN);
        mpfr_set_d(r52961, a, MPFR_RNDN);
        mpfr_add(r52962, r52960, r52961, MPFR_RNDN);
        mpfr_mul(r52963, r52958, r52962, MPFR_RNDN);
        mpfr_sub(r52964, r52955, r52963, MPFR_RNDN);
        mpfr_mul(r52965, r52948, r52964, MPFR_RNDN);
        return mpfr_get_d(r52965, MPFR_RNDN);
}

static mpfr_t r52966, r52967, r52968, r52969, r52970, r52971, r52972, r52973, r52974, r52975, r52976, r52977, r52978, r52979, r52980, r52981, r52982, r52983;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52966, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52967);
        mpfr_init(r52968);
        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);
}

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

