#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 r52769 = 2.0;
        float r52770 = x;
        float r52771 = y;
        float r52772 = r52770 * r52771;
        float r52773 = z;
        float r52774 = t;
        float r52775 = r52773 * r52774;
        float r52776 = r52772 + r52775;
        float r52777 = a;
        float r52778 = b;
        float r52779 = c;
        float r52780 = r52778 * r52779;
        float r52781 = r52777 + r52780;
        float r52782 = r52781 * r52779;
        float r52783 = i;
        float r52784 = r52782 * r52783;
        float r52785 = r52776 - r52784;
        float r52786 = r52769 * r52785;
        return r52786;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r52787 = 2.0;
        double r52788 = x;
        double r52789 = y;
        double r52790 = r52788 * r52789;
        double r52791 = z;
        double r52792 = t;
        double r52793 = r52791 * r52792;
        double r52794 = r52790 + r52793;
        double r52795 = a;
        double r52796 = b;
        double r52797 = c;
        double r52798 = r52796 * r52797;
        double r52799 = r52795 + r52798;
        double r52800 = r52799 * r52797;
        double r52801 = i;
        double r52802 = r52800 * r52801;
        double r52803 = r52794 - r52802;
        double r52804 = r52787 * r52803;
        return r52804;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r52805 = 2.0;
        float r52806 = t;
        float r52807 = z;
        float r52808 = r52806 * r52807;
        float r52809 = y;
        float r52810 = x;
        float r52811 = r52809 * r52810;
        float r52812 = r52808 + r52811;
        float r52813 = i;
        float r52814 = c;
        float r52815 = r52813 * r52814;
        float r52816 = b;
        float r52817 = r52816 * r52814;
        float r52818 = a;
        float r52819 = r52817 + r52818;
        float r52820 = r52815 * r52819;
        float r52821 = r52812 - r52820;
        float r52822 = r52805 * r52821;
        return r52822;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r52823 = 2.0;
        double r52824 = t;
        double r52825 = z;
        double r52826 = r52824 * r52825;
        double r52827 = y;
        double r52828 = x;
        double r52829 = r52827 * r52828;
        double r52830 = r52826 + r52829;
        double r52831 = i;
        double r52832 = c;
        double r52833 = r52831 * r52832;
        double r52834 = b;
        double r52835 = r52834 * r52832;
        double r52836 = a;
        double r52837 = r52835 + r52836;
        double r52838 = r52833 * r52837;
        double r52839 = r52830 - r52838;
        double r52840 = r52823 * r52839;
        return r52840;
}

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 r52841, r52842, r52843, r52844, r52845, r52846, r52847, r52848, r52849, r52850, r52851, r52852, r52853, r52854, r52855, r52856, r52857, r52858;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52841, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52842);
        mpfr_init(r52843);
        mpfr_init(r52844);
        mpfr_init(r52845);
        mpfr_init(r52846);
        mpfr_init(r52847);
        mpfr_init(r52848);
        mpfr_init(r52849);
        mpfr_init(r52850);
        mpfr_init(r52851);
        mpfr_init(r52852);
        mpfr_init(r52853);
        mpfr_init(r52854);
        mpfr_init(r52855);
        mpfr_init(r52856);
        mpfr_init(r52857);
        mpfr_init(r52858);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52842, x, MPFR_RNDN);
        mpfr_set_d(r52843, y, MPFR_RNDN);
        mpfr_mul(r52844, r52842, r52843, MPFR_RNDN);
        mpfr_set_d(r52845, z, MPFR_RNDN);
        mpfr_set_d(r52846, t, MPFR_RNDN);
        mpfr_mul(r52847, r52845, r52846, MPFR_RNDN);
        mpfr_add(r52848, r52844, r52847, MPFR_RNDN);
        mpfr_set_d(r52849, a, MPFR_RNDN);
        mpfr_set_d(r52850, b, MPFR_RNDN);
        mpfr_set_d(r52851, c, MPFR_RNDN);
        mpfr_mul(r52852, r52850, r52851, MPFR_RNDN);
        mpfr_add(r52853, r52849, r52852, MPFR_RNDN);
        mpfr_mul(r52854, r52853, r52851, MPFR_RNDN);
        mpfr_set_d(r52855, i, MPFR_RNDN);
        mpfr_mul(r52856, r52854, r52855, MPFR_RNDN);
        mpfr_sub(r52857, r52848, r52856, MPFR_RNDN);
        mpfr_mul(r52858, r52841, r52857, MPFR_RNDN);
        return mpfr_get_d(r52858, MPFR_RNDN);
}

static mpfr_t r52859, r52860, r52861, r52862, r52863, r52864, r52865, r52866, r52867, r52868, r52869, r52870, r52871, r52872, r52873, r52874, r52875, r52876;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52859, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52860);
        mpfr_init(r52861);
        mpfr_init(r52862);
        mpfr_init(r52863);
        mpfr_init(r52864);
        mpfr_init(r52865);
        mpfr_init(r52866);
        mpfr_init(r52867);
        mpfr_init(r52868);
        mpfr_init(r52869);
        mpfr_init(r52870);
        mpfr_init(r52871);
        mpfr_init(r52872);
        mpfr_init(r52873);
        mpfr_init(r52874);
        mpfr_init(r52875);
        mpfr_init(r52876);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52860, t, MPFR_RNDN);
        mpfr_set_d(r52861, z, MPFR_RNDN);
        mpfr_mul(r52862, r52860, r52861, MPFR_RNDN);
        mpfr_set_d(r52863, y, MPFR_RNDN);
        mpfr_set_d(r52864, x, MPFR_RNDN);
        mpfr_mul(r52865, r52863, r52864, MPFR_RNDN);
        mpfr_add(r52866, r52862, r52865, MPFR_RNDN);
        mpfr_set_d(r52867, i, MPFR_RNDN);
        mpfr_set_d(r52868, c, MPFR_RNDN);
        mpfr_mul(r52869, r52867, r52868, MPFR_RNDN);
        mpfr_set_d(r52870, b, MPFR_RNDN);
        mpfr_mul(r52871, r52870, r52868, MPFR_RNDN);
        mpfr_set_d(r52872, a, MPFR_RNDN);
        mpfr_add(r52873, r52871, r52872, MPFR_RNDN);
        mpfr_mul(r52874, r52869, r52873, MPFR_RNDN);
        mpfr_sub(r52875, r52866, r52874, MPFR_RNDN);
        mpfr_mul(r52876, r52859, r52875, MPFR_RNDN);
        return mpfr_get_d(r52876, MPFR_RNDN);
}

static mpfr_t r52877, r52878, r52879, r52880, r52881, r52882, r52883, r52884, r52885, r52886, r52887, r52888, r52889, r52890, r52891, r52892, r52893, r52894;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r52877, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52878);
        mpfr_init(r52879);
        mpfr_init(r52880);
        mpfr_init(r52881);
        mpfr_init(r52882);
        mpfr_init(r52883);
        mpfr_init(r52884);
        mpfr_init(r52885);
        mpfr_init(r52886);
        mpfr_init(r52887);
        mpfr_init(r52888);
        mpfr_init(r52889);
        mpfr_init(r52890);
        mpfr_init(r52891);
        mpfr_init(r52892);
        mpfr_init(r52893);
        mpfr_init(r52894);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        ;
        mpfr_set_d(r52878, t, MPFR_RNDN);
        mpfr_set_d(r52879, z, MPFR_RNDN);
        mpfr_mul(r52880, r52878, r52879, MPFR_RNDN);
        mpfr_set_d(r52881, y, MPFR_RNDN);
        mpfr_set_d(r52882, x, MPFR_RNDN);
        mpfr_mul(r52883, r52881, r52882, MPFR_RNDN);
        mpfr_add(r52884, r52880, r52883, MPFR_RNDN);
        mpfr_set_d(r52885, i, MPFR_RNDN);
        mpfr_set_d(r52886, c, MPFR_RNDN);
        mpfr_mul(r52887, r52885, r52886, MPFR_RNDN);
        mpfr_set_d(r52888, b, MPFR_RNDN);
        mpfr_mul(r52889, r52888, r52886, MPFR_RNDN);
        mpfr_set_d(r52890, a, MPFR_RNDN);
        mpfr_add(r52891, r52889, r52890, MPFR_RNDN);
        mpfr_mul(r52892, r52887, r52891, MPFR_RNDN);
        mpfr_sub(r52893, r52884, r52892, MPFR_RNDN);
        mpfr_mul(r52894, r52877, r52893, MPFR_RNDN);
        return mpfr_get_d(r52894, MPFR_RNDN);
}

