#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 r53640 = 2.0;
        float r53641 = x;
        float r53642 = sqrt(r53641);
        float r53643 = r53640 * r53642;
        float r53644 = y;
        float r53645 = z;
        float r53646 = t;
        float r53647 = r53645 * r53646;
        float r53648 = 3.0;
        float r53649 = r53647 / r53648;
        float r53650 = r53644 - r53649;
        float r53651 = cos(r53650);
        float r53652 = r53643 * r53651;
        float r53653 = a;
        float r53654 = b;
        float r53655 = r53654 * r53648;
        float r53656 = r53653 / r53655;
        float r53657 = r53652 - r53656;
        return r53657;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r53658 = 2.0;
        double r53659 = x;
        double r53660 = sqrt(r53659);
        double r53661 = r53658 * r53660;
        double r53662 = y;
        double r53663 = z;
        double r53664 = t;
        double r53665 = r53663 * r53664;
        double r53666 = 3.0;
        double r53667 = r53665 / r53666;
        double r53668 = r53662 - r53667;
        double r53669 = cos(r53668);
        double r53670 = r53661 * r53669;
        double r53671 = a;
        double r53672 = b;
        double r53673 = r53672 * r53666;
        double r53674 = r53671 / r53673;
        double r53675 = r53670 - r53674;
        return r53675;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r53676 = y;
        float r53677 = z;
        float r53678 = t;
        float r53679 = r53677 * r53678;
        float r53680 = 3.0;
        float r53681 = r53679 / r53680;
        float r53682 = r53676 - r53681;
        float r53683 = -2.0335655380336073e+307;
        bool r53684 = r53682 <= r53683;
        float r53685 = 2.0;
        float r53686 = x;
        float r53687 = sqrt(r53686);
        float r53688 = r53685 * r53687;
        float r53689 = 1;
        float r53690 = r53689 / r53676;
        float r53691 = 0.3333333333333333;
        float r53692 = r53691 / r53679;
        float r53693 = r53690 - r53692;
        float r53694 = cos(r53693);
        float r53695 = r53688 * r53694;
        float r53696 = a;
        float r53697 = b;
        float r53698 = r53697 * r53680;
        float r53699 = r53696 / r53698;
        float r53700 = r53695 - r53699;
        float r53701 = 1.506191503122346e+304;
        bool r53702 = r53682 <= r53701;
        float r53703 = cos(r53676);
        float r53704 = cos(r53681);
        float r53705 = r53703 * r53704;
        float r53706 = r53705 * r53705;
        float r53707 = sin(r53676);
        float r53708 = sin(r53681);
        float r53709 = r53707 * r53708;
        float r53710 = r53709 * r53709;
        float r53711 = r53706 - r53710;
        float r53712 = r53688 * r53711;
        float r53713 = exp(r53704);
        float r53714 = log(r53713);
        float r53715 = r53703 * r53714;
        float r53716 = cbrt(r53708);
        float r53717 = r53716 * r53716;
        float r53718 = r53717 * r53716;
        float r53719 = r53707 * r53718;
        float r53720 = r53715 - r53719;
        float r53721 = r53712 / r53720;
        float r53722 = r53721 - r53699;
        float r53723 = r53702 ? r53722 : r53700;
        float r53724 = r53684 ? r53700 : r53723;
        return r53724;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r53725 = y;
        double r53726 = z;
        double r53727 = t;
        double r53728 = r53726 * r53727;
        double r53729 = 3.0;
        double r53730 = r53728 / r53729;
        double r53731 = r53725 - r53730;
        double r53732 = -2.0335655380336073e+307;
        bool r53733 = r53731 <= r53732;
        double r53734 = 2.0;
        double r53735 = x;
        double r53736 = sqrt(r53735);
        double r53737 = r53734 * r53736;
        double r53738 = 1;
        double r53739 = r53738 / r53725;
        double r53740 = 0.3333333333333333;
        double r53741 = r53740 / r53728;
        double r53742 = r53739 - r53741;
        double r53743 = cos(r53742);
        double r53744 = r53737 * r53743;
        double r53745 = a;
        double r53746 = b;
        double r53747 = r53746 * r53729;
        double r53748 = r53745 / r53747;
        double r53749 = r53744 - r53748;
        double r53750 = 1.506191503122346e+304;
        bool r53751 = r53731 <= r53750;
        double r53752 = cos(r53725);
        double r53753 = cos(r53730);
        double r53754 = r53752 * r53753;
        double r53755 = r53754 * r53754;
        double r53756 = sin(r53725);
        double r53757 = sin(r53730);
        double r53758 = r53756 * r53757;
        double r53759 = r53758 * r53758;
        double r53760 = r53755 - r53759;
        double r53761 = r53737 * r53760;
        double r53762 = exp(r53753);
        double r53763 = log(r53762);
        double r53764 = r53752 * r53763;
        double r53765 = cbrt(r53757);
        double r53766 = r53765 * r53765;
        double r53767 = r53766 * r53765;
        double r53768 = r53756 * r53767;
        double r53769 = r53764 - r53768;
        double r53770 = r53761 / r53769;
        double r53771 = r53770 - r53748;
        double r53772 = r53751 ? r53771 : r53749;
        double r53773 = r53733 ? r53749 : r53772;
        return r53773;
}

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 r53774, r53775, r53776, r53777, r53778, r53779, r53780, r53781, r53782, r53783, r53784, r53785, r53786, r53787, r53788, r53789, r53790, r53791;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r53774, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53775);
        mpfr_init(r53776);
        mpfr_init(r53777);
        mpfr_init(r53778);
        mpfr_init(r53779);
        mpfr_init(r53780);
        mpfr_init(r53781);
        mpfr_init_set_str(r53782, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53783);
        mpfr_init(r53784);
        mpfr_init(r53785);
        mpfr_init(r53786);
        mpfr_init(r53787);
        mpfr_init(r53788);
        mpfr_init(r53789);
        mpfr_init(r53790);
        mpfr_init(r53791);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        ;
        mpfr_set_d(r53775, x, MPFR_RNDN);
        mpfr_sqrt(r53776, r53775, MPFR_RNDN);
        mpfr_mul(r53777, r53774, r53776, MPFR_RNDN);
        mpfr_set_d(r53778, y, MPFR_RNDN);
        mpfr_set_d(r53779, z, MPFR_RNDN);
        mpfr_set_d(r53780, t, MPFR_RNDN);
        mpfr_mul(r53781, r53779, r53780, MPFR_RNDN);
        ;
        mpfr_div(r53783, r53781, r53782, MPFR_RNDN);
        mpfr_sub(r53784, r53778, r53783, MPFR_RNDN);
        mpfr_cos(r53785, r53784, MPFR_RNDN);
        mpfr_mul(r53786, r53777, r53785, MPFR_RNDN);
        mpfr_set_d(r53787, a, MPFR_RNDN);
        mpfr_set_d(r53788, b, MPFR_RNDN);
        mpfr_mul(r53789, r53788, r53782, MPFR_RNDN);
        mpfr_div(r53790, r53787, r53789, MPFR_RNDN);
        mpfr_sub(r53791, r53786, r53790, MPFR_RNDN);
        return mpfr_get_d(r53791, MPFR_RNDN);
}

static mpfr_t r53792, r53793, r53794, r53795, r53796, r53797, r53798, r53799, r53800, r53801, r53802, r53803, r53804, r53805, r53806, r53807, r53808, r53809, r53810, r53811, r53812, r53813, r53814, r53815, r53816, r53817, r53818, r53819, r53820, r53821, r53822, r53823, r53824, r53825, r53826, r53827, r53828, r53829, r53830, r53831, r53832, r53833, r53834, r53835, r53836, r53837, r53838, r53839, r53840;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r53792);
        mpfr_init(r53793);
        mpfr_init(r53794);
        mpfr_init(r53795);
        mpfr_init_set_str(r53796, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53797);
        mpfr_init(r53798);
        mpfr_init_set_str(r53799, "-2.0335655380336073e+307", 10, MPFR_RNDN);
        mpfr_init(r53800);
        mpfr_init_set_str(r53801, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53802);
        mpfr_init(r53803);
        mpfr_init(r53804);
        mpfr_init_set_str(r53805, "1", 10, MPFR_RNDN);
        mpfr_init(r53806);
        mpfr_init_set_str(r53807, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r53808);
        mpfr_init(r53809);
        mpfr_init(r53810);
        mpfr_init(r53811);
        mpfr_init(r53812);
        mpfr_init(r53813);
        mpfr_init(r53814);
        mpfr_init(r53815);
        mpfr_init(r53816);
        mpfr_init_set_str(r53817, "1.506191503122346e+304", 10, MPFR_RNDN);
        mpfr_init(r53818);
        mpfr_init(r53819);
        mpfr_init(r53820);
        mpfr_init(r53821);
        mpfr_init(r53822);
        mpfr_init(r53823);
        mpfr_init(r53824);
        mpfr_init(r53825);
        mpfr_init(r53826);
        mpfr_init(r53827);
        mpfr_init(r53828);
        mpfr_init(r53829);
        mpfr_init(r53830);
        mpfr_init(r53831);
        mpfr_init(r53832);
        mpfr_init(r53833);
        mpfr_init(r53834);
        mpfr_init(r53835);
        mpfr_init(r53836);
        mpfr_init(r53837);
        mpfr_init(r53838);
        mpfr_init(r53839);
        mpfr_init(r53840);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53792, y, MPFR_RNDN);
        mpfr_set_d(r53793, z, MPFR_RNDN);
        mpfr_set_d(r53794, t, MPFR_RNDN);
        mpfr_mul(r53795, r53793, r53794, MPFR_RNDN);
        ;
        mpfr_div(r53797, r53795, r53796, MPFR_RNDN);
        mpfr_sub(r53798, r53792, r53797, MPFR_RNDN);
        ;
        mpfr_set_si(r53800, mpfr_cmp(r53798, r53799) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r53802, x, MPFR_RNDN);
        mpfr_sqrt(r53803, r53802, MPFR_RNDN);
        mpfr_mul(r53804, r53801, r53803, MPFR_RNDN);
        ;
        mpfr_div(r53806, r53805, r53792, MPFR_RNDN);
        ;
        mpfr_div(r53808, r53807, r53795, MPFR_RNDN);
        mpfr_sub(r53809, r53806, r53808, MPFR_RNDN);
        mpfr_cos(r53810, r53809, MPFR_RNDN);
        mpfr_mul(r53811, r53804, r53810, MPFR_RNDN);
        mpfr_set_d(r53812, a, MPFR_RNDN);
        mpfr_set_d(r53813, b, MPFR_RNDN);
        mpfr_mul(r53814, r53813, r53796, MPFR_RNDN);
        mpfr_div(r53815, r53812, r53814, MPFR_RNDN);
        mpfr_sub(r53816, r53811, r53815, MPFR_RNDN);
        ;
        mpfr_set_si(r53818, mpfr_cmp(r53798, r53817) <= 0, MPFR_RNDN);
        mpfr_cos(r53819, r53792, MPFR_RNDN);
        mpfr_cos(r53820, r53797, MPFR_RNDN);
        mpfr_mul(r53821, r53819, r53820, MPFR_RNDN);
        mpfr_mul(r53822, r53821, r53821, MPFR_RNDN);
        mpfr_sin(r53823, r53792, MPFR_RNDN);
        mpfr_sin(r53824, r53797, MPFR_RNDN);
        mpfr_mul(r53825, r53823, r53824, MPFR_RNDN);
        mpfr_mul(r53826, r53825, r53825, MPFR_RNDN);
        mpfr_sub(r53827, r53822, r53826, MPFR_RNDN);
        mpfr_mul(r53828, r53804, r53827, MPFR_RNDN);
        mpfr_exp(r53829, r53820, MPFR_RNDN);
        mpfr_log(r53830, r53829, MPFR_RNDN);
        mpfr_mul(r53831, r53819, r53830, MPFR_RNDN);
        mpfr_cbrt(r53832, r53824, MPFR_RNDN);
        mpfr_mul(r53833, r53832, r53832, MPFR_RNDN);
        mpfr_mul(r53834, r53833, r53832, MPFR_RNDN);
        mpfr_mul(r53835, r53823, r53834, MPFR_RNDN);
        mpfr_sub(r53836, r53831, r53835, MPFR_RNDN);
        mpfr_div(r53837, r53828, r53836, MPFR_RNDN);
        mpfr_sub(r53838, r53837, r53815, MPFR_RNDN);
        if (mpfr_get_si(r53818, MPFR_RNDN)) { mpfr_set(r53839, r53838, MPFR_RNDN); } else { mpfr_set(r53839, r53816, MPFR_RNDN); };
        if (mpfr_get_si(r53800, MPFR_RNDN)) { mpfr_set(r53840, r53816, MPFR_RNDN); } else { mpfr_set(r53840, r53839, MPFR_RNDN); };
        return mpfr_get_d(r53840, MPFR_RNDN);
}

static mpfr_t 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, r53868, r53869, r53870, r53871, r53872, r53873, r53874, r53875, r53876, r53877, r53878, r53879, r53880, r53881, r53882, r53883, r53884, r53885, r53886, r53887, r53888, r53889;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r53841);
        mpfr_init(r53842);
        mpfr_init(r53843);
        mpfr_init(r53844);
        mpfr_init_set_str(r53845, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53846);
        mpfr_init(r53847);
        mpfr_init_set_str(r53848, "-2.0335655380336073e+307", 10, MPFR_RNDN);
        mpfr_init(r53849);
        mpfr_init_set_str(r53850, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53851);
        mpfr_init(r53852);
        mpfr_init(r53853);
        mpfr_init_set_str(r53854, "1", 10, MPFR_RNDN);
        mpfr_init(r53855);
        mpfr_init_set_str(r53856, "0.3333333333333333", 10, MPFR_RNDN);
        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_set_str(r53866, "1.506191503122346e+304", 10, MPFR_RNDN);
        mpfr_init(r53867);
        mpfr_init(r53868);
        mpfr_init(r53869);
        mpfr_init(r53870);
        mpfr_init(r53871);
        mpfr_init(r53872);
        mpfr_init(r53873);
        mpfr_init(r53874);
        mpfr_init(r53875);
        mpfr_init(r53876);
        mpfr_init(r53877);
        mpfr_init(r53878);
        mpfr_init(r53879);
        mpfr_init(r53880);
        mpfr_init(r53881);
        mpfr_init(r53882);
        mpfr_init(r53883);
        mpfr_init(r53884);
        mpfr_init(r53885);
        mpfr_init(r53886);
        mpfr_init(r53887);
        mpfr_init(r53888);
        mpfr_init(r53889);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53841, y, MPFR_RNDN);
        mpfr_set_d(r53842, z, MPFR_RNDN);
        mpfr_set_d(r53843, t, MPFR_RNDN);
        mpfr_mul(r53844, r53842, r53843, MPFR_RNDN);
        ;
        mpfr_div(r53846, r53844, r53845, MPFR_RNDN);
        mpfr_sub(r53847, r53841, r53846, MPFR_RNDN);
        ;
        mpfr_set_si(r53849, mpfr_cmp(r53847, r53848) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r53851, x, MPFR_RNDN);
        mpfr_sqrt(r53852, r53851, MPFR_RNDN);
        mpfr_mul(r53853, r53850, r53852, MPFR_RNDN);
        ;
        mpfr_div(r53855, r53854, r53841, MPFR_RNDN);
        ;
        mpfr_div(r53857, r53856, r53844, MPFR_RNDN);
        mpfr_sub(r53858, r53855, r53857, MPFR_RNDN);
        mpfr_cos(r53859, r53858, MPFR_RNDN);
        mpfr_mul(r53860, r53853, r53859, MPFR_RNDN);
        mpfr_set_d(r53861, a, MPFR_RNDN);
        mpfr_set_d(r53862, b, MPFR_RNDN);
        mpfr_mul(r53863, r53862, r53845, MPFR_RNDN);
        mpfr_div(r53864, r53861, r53863, MPFR_RNDN);
        mpfr_sub(r53865, r53860, r53864, MPFR_RNDN);
        ;
        mpfr_set_si(r53867, mpfr_cmp(r53847, r53866) <= 0, MPFR_RNDN);
        mpfr_cos(r53868, r53841, MPFR_RNDN);
        mpfr_cos(r53869, r53846, MPFR_RNDN);
        mpfr_mul(r53870, r53868, r53869, MPFR_RNDN);
        mpfr_mul(r53871, r53870, r53870, MPFR_RNDN);
        mpfr_sin(r53872, r53841, MPFR_RNDN);
        mpfr_sin(r53873, r53846, MPFR_RNDN);
        mpfr_mul(r53874, r53872, r53873, MPFR_RNDN);
        mpfr_mul(r53875, r53874, r53874, MPFR_RNDN);
        mpfr_sub(r53876, r53871, r53875, MPFR_RNDN);
        mpfr_mul(r53877, r53853, r53876, MPFR_RNDN);
        mpfr_exp(r53878, r53869, MPFR_RNDN);
        mpfr_log(r53879, r53878, MPFR_RNDN);
        mpfr_mul(r53880, r53868, r53879, MPFR_RNDN);
        mpfr_cbrt(r53881, r53873, MPFR_RNDN);
        mpfr_mul(r53882, r53881, r53881, MPFR_RNDN);
        mpfr_mul(r53883, r53882, r53881, MPFR_RNDN);
        mpfr_mul(r53884, r53872, r53883, MPFR_RNDN);
        mpfr_sub(r53885, r53880, r53884, MPFR_RNDN);
        mpfr_div(r53886, r53877, r53885, MPFR_RNDN);
        mpfr_sub(r53887, r53886, r53864, MPFR_RNDN);
        if (mpfr_get_si(r53867, MPFR_RNDN)) { mpfr_set(r53888, r53887, MPFR_RNDN); } else { mpfr_set(r53888, r53865, MPFR_RNDN); };
        if (mpfr_get_si(r53849, MPFR_RNDN)) { mpfr_set(r53889, r53865, MPFR_RNDN); } else { mpfr_set(r53889, r53888, MPFR_RNDN); };
        return mpfr_get_d(r53889, MPFR_RNDN);
}

