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

char *name = "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, K";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r53670 = 2.0;
        float r53671 = x;
        float r53672 = sqrt(r53671);
        float r53673 = r53670 * r53672;
        float r53674 = y;
        float r53675 = z;
        float r53676 = t;
        float r53677 = r53675 * r53676;
        float r53678 = 3.0;
        float r53679 = r53677 / r53678;
        float r53680 = r53674 - r53679;
        float r53681 = cos(r53680);
        float r53682 = r53673 * r53681;
        float r53683 = a;
        float r53684 = b;
        float r53685 = r53684 * r53678;
        float r53686 = r53683 / r53685;
        float r53687 = r53682 - r53686;
        return r53687;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r53688 = 2.0;
        double r53689 = x;
        double r53690 = sqrt(r53689);
        double r53691 = r53688 * r53690;
        double r53692 = y;
        double r53693 = z;
        double r53694 = t;
        double r53695 = r53693 * r53694;
        double r53696 = 3.0;
        double r53697 = r53695 / r53696;
        double r53698 = r53692 - r53697;
        double r53699 = cos(r53698);
        double r53700 = r53691 * r53699;
        double r53701 = a;
        double r53702 = b;
        double r53703 = r53702 * r53696;
        double r53704 = r53701 / r53703;
        double r53705 = r53700 - r53704;
        return r53705;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r53706 = y;
        float r53707 = z;
        float r53708 = t;
        float r53709 = r53707 * r53708;
        float r53710 = 3.0;
        float r53711 = r53709 / r53710;
        float r53712 = r53706 - r53711;
        float r53713 = -inf.0;
        bool r53714 = r53712 <= r53713;
        float r53715 = 2.0;
        float r53716 = x;
        float r53717 = sqrt(r53716);
        float r53718 = r53715 * r53717;
        float r53719 = 1;
        float r53720 = r53719 / r53706;
        float r53721 = 0.3333333333333333;
        float r53722 = r53721 / r53709;
        float r53723 = r53720 - r53722;
        float r53724 = cos(r53723);
        float r53725 = r53718 * r53724;
        float r53726 = a;
        float r53727 = b;
        float r53728 = r53727 * r53710;
        float r53729 = r53726 / r53728;
        float r53730 = r53725 - r53729;
        float r53731 = 4.4715459573037013e+303;
        bool r53732 = r53712 <= r53731;
        float r53733 = cos(r53706);
        float r53734 = cos(r53711);
        float r53735 = r53733 * r53734;
        float r53736 = sin(r53706);
        float r53737 = cbrt(r53711);
        float r53738 = cbrt(r53709);
        float r53739 = cbrt(r53710);
        float r53740 = r53738 / r53739;
        float r53741 = r53737 * r53740;
        float r53742 = r53737 * r53737;
        float r53743 = cbrt(r53742);
        float r53744 = cbrt(r53737);
        float r53745 = r53743 * r53744;
        float r53746 = r53741 * r53745;
        float r53747 = sin(r53746);
        float r53748 = r53736 * r53747;
        float r53749 = r53735 + r53748;
        float r53750 = r53718 * r53749;
        float r53751 = r53750 - r53729;
        float r53752 = r53732 ? r53751 : r53730;
        float r53753 = r53714 ? r53730 : r53752;
        return r53753;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r53754 = y;
        double r53755 = z;
        double r53756 = t;
        double r53757 = r53755 * r53756;
        double r53758 = 3.0;
        double r53759 = r53757 / r53758;
        double r53760 = r53754 - r53759;
        double r53761 = -inf.0;
        bool r53762 = r53760 <= r53761;
        double r53763 = 2.0;
        double r53764 = x;
        double r53765 = sqrt(r53764);
        double r53766 = r53763 * r53765;
        double r53767 = 1;
        double r53768 = r53767 / r53754;
        double r53769 = 0.3333333333333333;
        double r53770 = r53769 / r53757;
        double r53771 = r53768 - r53770;
        double r53772 = cos(r53771);
        double r53773 = r53766 * r53772;
        double r53774 = a;
        double r53775 = b;
        double r53776 = r53775 * r53758;
        double r53777 = r53774 / r53776;
        double r53778 = r53773 - r53777;
        double r53779 = 4.4715459573037013e+303;
        bool r53780 = r53760 <= r53779;
        double r53781 = cos(r53754);
        double r53782 = cos(r53759);
        double r53783 = r53781 * r53782;
        double r53784 = sin(r53754);
        double r53785 = cbrt(r53759);
        double r53786 = cbrt(r53757);
        double r53787 = cbrt(r53758);
        double r53788 = r53786 / r53787;
        double r53789 = r53785 * r53788;
        double r53790 = r53785 * r53785;
        double r53791 = cbrt(r53790);
        double r53792 = cbrt(r53785);
        double r53793 = r53791 * r53792;
        double r53794 = r53789 * r53793;
        double r53795 = sin(r53794);
        double r53796 = r53784 * r53795;
        double r53797 = r53783 + r53796;
        double r53798 = r53766 * r53797;
        double r53799 = r53798 - r53777;
        double r53800 = r53780 ? r53799 : r53778;
        double r53801 = r53762 ? r53778 : r53800;
        return r53801;
}

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 r53802, r53803, r53804, r53805, r53806, r53807, r53808, r53809, r53810, r53811, r53812, r53813, r53814, r53815, r53816, r53817, r53818, r53819;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r53802, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53803);
        mpfr_init(r53804);
        mpfr_init(r53805);
        mpfr_init(r53806);
        mpfr_init(r53807);
        mpfr_init(r53808);
        mpfr_init(r53809);
        mpfr_init_set_str(r53810, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53811);
        mpfr_init(r53812);
        mpfr_init(r53813);
        mpfr_init(r53814);
        mpfr_init(r53815);
        mpfr_init(r53816);
        mpfr_init(r53817);
        mpfr_init(r53818);
        mpfr_init(r53819);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        ;
        mpfr_set_d(r53803, x, MPFR_RNDN);
        mpfr_sqrt(r53804, r53803, MPFR_RNDN);
        mpfr_mul(r53805, r53802, r53804, MPFR_RNDN);
        mpfr_set_d(r53806, y, MPFR_RNDN);
        mpfr_set_d(r53807, z, MPFR_RNDN);
        mpfr_set_d(r53808, t, MPFR_RNDN);
        mpfr_mul(r53809, r53807, r53808, MPFR_RNDN);
        ;
        mpfr_div(r53811, r53809, r53810, MPFR_RNDN);
        mpfr_sub(r53812, r53806, r53811, MPFR_RNDN);
        mpfr_cos(r53813, r53812, MPFR_RNDN);
        mpfr_mul(r53814, r53805, r53813, MPFR_RNDN);
        mpfr_set_d(r53815, a, MPFR_RNDN);
        mpfr_set_d(r53816, b, MPFR_RNDN);
        mpfr_mul(r53817, r53816, r53810, MPFR_RNDN);
        mpfr_div(r53818, r53815, r53817, MPFR_RNDN);
        mpfr_sub(r53819, r53814, r53818, MPFR_RNDN);
        return mpfr_get_d(r53819, MPFR_RNDN);
}

static mpfr_t r53820, r53821, r53822, r53823, r53824, r53825, r53826, r53827, r53828, r53829, r53830, r53831, r53832, r53833, r53834, r53835, r53836, r53837, r53838, r53839, r53840, r53841, r53842, r53843, r53844, r53845, r53846, r53847, r53848, r53849, r53850, r53851, r53852, r53853, r53854, r53855, r53856, r53857, r53858, r53859, r53860, r53861, r53862, r53863, r53864, r53865, r53866, r53867;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r53820);
        mpfr_init(r53821);
        mpfr_init(r53822);
        mpfr_init(r53823);
        mpfr_init_set_str(r53824, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53825);
        mpfr_init(r53826);
        mpfr_init_set_str(r53827, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r53828);
        mpfr_init_set_str(r53829, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53830);
        mpfr_init(r53831);
        mpfr_init(r53832);
        mpfr_init_set_str(r53833, "1", 10, MPFR_RNDN);
        mpfr_init(r53834);
        mpfr_init_set_str(r53835, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r53836);
        mpfr_init(r53837);
        mpfr_init(r53838);
        mpfr_init(r53839);
        mpfr_init(r53840);
        mpfr_init(r53841);
        mpfr_init(r53842);
        mpfr_init(r53843);
        mpfr_init(r53844);
        mpfr_init_set_str(r53845, "4.4715459573037013e+303", 10, MPFR_RNDN);
        mpfr_init(r53846);
        mpfr_init(r53847);
        mpfr_init(r53848);
        mpfr_init(r53849);
        mpfr_init(r53850);
        mpfr_init(r53851);
        mpfr_init(r53852);
        mpfr_init(r53853);
        mpfr_init(r53854);
        mpfr_init(r53855);
        mpfr_init(r53856);
        mpfr_init(r53857);
        mpfr_init(r53858);
        mpfr_init(r53859);
        mpfr_init(r53860);
        mpfr_init(r53861);
        mpfr_init(r53862);
        mpfr_init(r53863);
        mpfr_init(r53864);
        mpfr_init(r53865);
        mpfr_init(r53866);
        mpfr_init(r53867);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53820, y, MPFR_RNDN);
        mpfr_set_d(r53821, z, MPFR_RNDN);
        mpfr_set_d(r53822, t, MPFR_RNDN);
        mpfr_mul(r53823, r53821, r53822, MPFR_RNDN);
        ;
        mpfr_div(r53825, r53823, r53824, MPFR_RNDN);
        mpfr_sub(r53826, r53820, r53825, MPFR_RNDN);
        ;
        mpfr_set_si(r53828, mpfr_cmp(r53826, r53827) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r53830, x, MPFR_RNDN);
        mpfr_sqrt(r53831, r53830, MPFR_RNDN);
        mpfr_mul(r53832, r53829, r53831, MPFR_RNDN);
        ;
        mpfr_div(r53834, r53833, r53820, MPFR_RNDN);
        ;
        mpfr_div(r53836, r53835, r53823, MPFR_RNDN);
        mpfr_sub(r53837, r53834, r53836, MPFR_RNDN);
        mpfr_cos(r53838, r53837, MPFR_RNDN);
        mpfr_mul(r53839, r53832, r53838, MPFR_RNDN);
        mpfr_set_d(r53840, a, MPFR_RNDN);
        mpfr_set_d(r53841, b, MPFR_RNDN);
        mpfr_mul(r53842, r53841, r53824, MPFR_RNDN);
        mpfr_div(r53843, r53840, r53842, MPFR_RNDN);
        mpfr_sub(r53844, r53839, r53843, MPFR_RNDN);
        ;
        mpfr_set_si(r53846, mpfr_cmp(r53826, r53845) <= 0, MPFR_RNDN);
        mpfr_cos(r53847, r53820, MPFR_RNDN);
        mpfr_cos(r53848, r53825, MPFR_RNDN);
        mpfr_mul(r53849, r53847, r53848, MPFR_RNDN);
        mpfr_sin(r53850, r53820, MPFR_RNDN);
        mpfr_cbrt(r53851, r53825, MPFR_RNDN);
        mpfr_cbrt(r53852, r53823, MPFR_RNDN);
        mpfr_cbrt(r53853, r53824, MPFR_RNDN);
        mpfr_div(r53854, r53852, r53853, MPFR_RNDN);
        mpfr_mul(r53855, r53851, r53854, MPFR_RNDN);
        mpfr_mul(r53856, r53851, r53851, MPFR_RNDN);
        mpfr_cbrt(r53857, r53856, MPFR_RNDN);
        mpfr_cbrt(r53858, r53851, MPFR_RNDN);
        mpfr_mul(r53859, r53857, r53858, MPFR_RNDN);
        mpfr_mul(r53860, r53855, r53859, MPFR_RNDN);
        mpfr_sin(r53861, r53860, MPFR_RNDN);
        mpfr_mul(r53862, r53850, r53861, MPFR_RNDN);
        mpfr_add(r53863, r53849, r53862, MPFR_RNDN);
        mpfr_mul(r53864, r53832, r53863, MPFR_RNDN);
        mpfr_sub(r53865, r53864, r53843, MPFR_RNDN);
        if (mpfr_get_si(r53846, MPFR_RNDN)) { mpfr_set(r53866, r53865, MPFR_RNDN); } else { mpfr_set(r53866, r53844, MPFR_RNDN); };
        if (mpfr_get_si(r53828, MPFR_RNDN)) { mpfr_set(r53867, r53844, MPFR_RNDN); } else { mpfr_set(r53867, r53866, MPFR_RNDN); };
        return mpfr_get_d(r53867, MPFR_RNDN);
}

static mpfr_t r53868, r53869, r53870, r53871, r53872, r53873, r53874, r53875, r53876, r53877, r53878, r53879, r53880, r53881, r53882, r53883, r53884, r53885, r53886, r53887, r53888, r53889, r53890, r53891, r53892, r53893, r53894, r53895, r53896, r53897, r53898, r53899, r53900, r53901, r53902, r53903, r53904, r53905, r53906, r53907, r53908, r53909, r53910, r53911, r53912, r53913, r53914, r53915;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r53868);
        mpfr_init(r53869);
        mpfr_init(r53870);
        mpfr_init(r53871);
        mpfr_init_set_str(r53872, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53873);
        mpfr_init(r53874);
        mpfr_init_set_str(r53875, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r53876);
        mpfr_init_set_str(r53877, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53878);
        mpfr_init(r53879);
        mpfr_init(r53880);
        mpfr_init_set_str(r53881, "1", 10, MPFR_RNDN);
        mpfr_init(r53882);
        mpfr_init_set_str(r53883, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r53884);
        mpfr_init(r53885);
        mpfr_init(r53886);
        mpfr_init(r53887);
        mpfr_init(r53888);
        mpfr_init(r53889);
        mpfr_init(r53890);
        mpfr_init(r53891);
        mpfr_init(r53892);
        mpfr_init_set_str(r53893, "4.4715459573037013e+303", 10, MPFR_RNDN);
        mpfr_init(r53894);
        mpfr_init(r53895);
        mpfr_init(r53896);
        mpfr_init(r53897);
        mpfr_init(r53898);
        mpfr_init(r53899);
        mpfr_init(r53900);
        mpfr_init(r53901);
        mpfr_init(r53902);
        mpfr_init(r53903);
        mpfr_init(r53904);
        mpfr_init(r53905);
        mpfr_init(r53906);
        mpfr_init(r53907);
        mpfr_init(r53908);
        mpfr_init(r53909);
        mpfr_init(r53910);
        mpfr_init(r53911);
        mpfr_init(r53912);
        mpfr_init(r53913);
        mpfr_init(r53914);
        mpfr_init(r53915);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53868, y, MPFR_RNDN);
        mpfr_set_d(r53869, z, MPFR_RNDN);
        mpfr_set_d(r53870, t, MPFR_RNDN);
        mpfr_mul(r53871, r53869, r53870, MPFR_RNDN);
        ;
        mpfr_div(r53873, r53871, r53872, MPFR_RNDN);
        mpfr_sub(r53874, r53868, r53873, MPFR_RNDN);
        ;
        mpfr_set_si(r53876, mpfr_cmp(r53874, r53875) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r53878, x, MPFR_RNDN);
        mpfr_sqrt(r53879, r53878, MPFR_RNDN);
        mpfr_mul(r53880, r53877, r53879, MPFR_RNDN);
        ;
        mpfr_div(r53882, r53881, r53868, MPFR_RNDN);
        ;
        mpfr_div(r53884, r53883, r53871, MPFR_RNDN);
        mpfr_sub(r53885, r53882, r53884, MPFR_RNDN);
        mpfr_cos(r53886, r53885, MPFR_RNDN);
        mpfr_mul(r53887, r53880, r53886, MPFR_RNDN);
        mpfr_set_d(r53888, a, MPFR_RNDN);
        mpfr_set_d(r53889, b, MPFR_RNDN);
        mpfr_mul(r53890, r53889, r53872, MPFR_RNDN);
        mpfr_div(r53891, r53888, r53890, MPFR_RNDN);
        mpfr_sub(r53892, r53887, r53891, MPFR_RNDN);
        ;
        mpfr_set_si(r53894, mpfr_cmp(r53874, r53893) <= 0, MPFR_RNDN);
        mpfr_cos(r53895, r53868, MPFR_RNDN);
        mpfr_cos(r53896, r53873, MPFR_RNDN);
        mpfr_mul(r53897, r53895, r53896, MPFR_RNDN);
        mpfr_sin(r53898, r53868, MPFR_RNDN);
        mpfr_cbrt(r53899, r53873, MPFR_RNDN);
        mpfr_cbrt(r53900, r53871, MPFR_RNDN);
        mpfr_cbrt(r53901, r53872, MPFR_RNDN);
        mpfr_div(r53902, r53900, r53901, MPFR_RNDN);
        mpfr_mul(r53903, r53899, r53902, MPFR_RNDN);
        mpfr_mul(r53904, r53899, r53899, MPFR_RNDN);
        mpfr_cbrt(r53905, r53904, MPFR_RNDN);
        mpfr_cbrt(r53906, r53899, MPFR_RNDN);
        mpfr_mul(r53907, r53905, r53906, MPFR_RNDN);
        mpfr_mul(r53908, r53903, r53907, MPFR_RNDN);
        mpfr_sin(r53909, r53908, MPFR_RNDN);
        mpfr_mul(r53910, r53898, r53909, MPFR_RNDN);
        mpfr_add(r53911, r53897, r53910, MPFR_RNDN);
        mpfr_mul(r53912, r53880, r53911, MPFR_RNDN);
        mpfr_sub(r53913, r53912, r53891, MPFR_RNDN);
        if (mpfr_get_si(r53894, MPFR_RNDN)) { mpfr_set(r53914, r53913, MPFR_RNDN); } else { mpfr_set(r53914, r53892, MPFR_RNDN); };
        if (mpfr_get_si(r53876, MPFR_RNDN)) { mpfr_set(r53915, r53892, MPFR_RNDN); } else { mpfr_set(r53915, r53914, MPFR_RNDN); };
        return mpfr_get_d(r53915, MPFR_RNDN);
}

