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

char *name = "quadp (p42, positive)";

double f_if(float a, float b, float c) {
        float r37783 = b;
        float r37784 = -r37783;
        float r37785 = r37783 * r37783;
        float r37786 = 4;
        float r37787 = a;
        float r37788 = c;
        float r37789 = r37787 * r37788;
        float r37790 = r37786 * r37789;
        float r37791 = r37785 - r37790;
        float r37792 = sqrt(r37791);
        float r37793 = r37784 + r37792;
        float r37794 = 2;
        float r37795 = r37794 * r37787;
        float r37796 = r37793 / r37795;
        return r37796;
}

double f_id(double a, double b, double c) {
        double r37797 = b;
        double r37798 = -r37797;
        double r37799 = r37797 * r37797;
        double r37800 = 4;
        double r37801 = a;
        double r37802 = c;
        double r37803 = r37801 * r37802;
        double r37804 = r37800 * r37803;
        double r37805 = r37799 - r37804;
        double r37806 = sqrt(r37805);
        double r37807 = r37798 + r37806;
        double r37808 = 2;
        double r37809 = r37808 * r37801;
        double r37810 = r37807 / r37809;
        return r37810;
}


double f_of(float a, float b, float c) {
        float r37811 = b;
        float r37812 = -7.833327672762858e+152;
        bool r37813 = r37811 <= r37812;
        float r37814 = -r37811;
        float r37815 = a;
        float r37816 = r37814 / r37815;
        float r37817 = 7.698366662298276e-138;
        bool r37818 = r37811 <= r37817;
        float r37819 = r37811 * r37811;
        float r37820 = 4;
        float r37821 = c;
        float r37822 = r37820 * r37821;
        float r37823 = r37822 * r37815;
        float r37824 = r37819 - r37823;
        float r37825 = sqrt(r37824);
        float r37826 = -r37825;
        float r37827 = r37811 + r37826;
        float r37828 = 2;
        float r37829 = r37828 * r37815;
        float r37830 = -r37829;
        float r37831 = r37827 / r37830;
        float r37832 = r37821 / r37811;
        float r37833 = -2;
        float r37834 = r37833 / r37828;
        float r37835 = r37832 * r37834;
        float r37836 = r37818 ? r37831 : r37835;
        float r37837 = r37813 ? r37816 : r37836;
        return r37837;
}

double f_od(double a, double b, double c) {
        double r37838 = b;
        double r37839 = -7.833327672762858e+152;
        bool r37840 = r37838 <= r37839;
        double r37841 = -r37838;
        double r37842 = a;
        double r37843 = r37841 / r37842;
        double r37844 = 7.698366662298276e-138;
        bool r37845 = r37838 <= r37844;
        double r37846 = r37838 * r37838;
        double r37847 = 4;
        double r37848 = c;
        double r37849 = r37847 * r37848;
        double r37850 = r37849 * r37842;
        double r37851 = r37846 - r37850;
        double r37852 = sqrt(r37851);
        double r37853 = -r37852;
        double r37854 = r37838 + r37853;
        double r37855 = 2;
        double r37856 = r37855 * r37842;
        double r37857 = -r37856;
        double r37858 = r37854 / r37857;
        double r37859 = r37848 / r37838;
        double r37860 = -2;
        double r37861 = r37860 / r37855;
        double r37862 = r37859 * r37861;
        double r37863 = r37845 ? r37858 : r37862;
        double r37864 = r37840 ? r37843 : r37863;
        return r37864;
}

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 r37865, r37866, r37867, r37868, r37869, r37870, r37871, r37872, r37873, r37874, r37875, r37876, r37877, r37878;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r37865);
        mpfr_init(r37866);
        mpfr_init(r37867);
        mpfr_init_set_str(r37868, "4", 10, MPFR_RNDN);
        mpfr_init(r37869);
        mpfr_init(r37870);
        mpfr_init(r37871);
        mpfr_init(r37872);
        mpfr_init(r37873);
        mpfr_init(r37874);
        mpfr_init(r37875);
        mpfr_init_set_str(r37876, "2", 10, MPFR_RNDN);
        mpfr_init(r37877);
        mpfr_init(r37878);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r37865, b, MPFR_RNDN);
        mpfr_neg(r37866, r37865, MPFR_RNDN);
        mpfr_mul(r37867, r37865, r37865, MPFR_RNDN);
        ;
        mpfr_set_d(r37869, a, MPFR_RNDN);
        mpfr_set_d(r37870, c, MPFR_RNDN);
        mpfr_mul(r37871, r37869, r37870, MPFR_RNDN);
        mpfr_mul(r37872, r37868, r37871, MPFR_RNDN);
        mpfr_sub(r37873, r37867, r37872, MPFR_RNDN);
        mpfr_sqrt(r37874, r37873, MPFR_RNDN);
        mpfr_add(r37875, r37866, r37874, MPFR_RNDN);
        ;
        mpfr_mul(r37877, r37876, r37869, MPFR_RNDN);
        mpfr_div(r37878, r37875, r37877, MPFR_RNDN);
        return mpfr_get_d(r37878, MPFR_RNDN);
}

static mpfr_t r37879, r37880, r37881, r37882, r37883, r37884, r37885, r37886, r37887, r37888, r37889, r37890, r37891, r37892, r37893, r37894, r37895, r37896, r37897, r37898, r37899, r37900, r37901, r37902, r37903, r37904, r37905;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r37879);
        mpfr_init_set_str(r37880, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r37881);
        mpfr_init(r37882);
        mpfr_init(r37883);
        mpfr_init(r37884);
        mpfr_init_set_str(r37885, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r37886);
        mpfr_init(r37887);
        mpfr_init_set_str(r37888, "4", 10, MPFR_RNDN);
        mpfr_init(r37889);
        mpfr_init(r37890);
        mpfr_init(r37891);
        mpfr_init(r37892);
        mpfr_init(r37893);
        mpfr_init(r37894);
        mpfr_init(r37895);
        mpfr_init_set_str(r37896, "2", 10, MPFR_RNDN);
        mpfr_init(r37897);
        mpfr_init(r37898);
        mpfr_init(r37899);
        mpfr_init(r37900);
        mpfr_init_set_str(r37901, "-2", 10, MPFR_RNDN);
        mpfr_init(r37902);
        mpfr_init(r37903);
        mpfr_init(r37904);
        mpfr_init(r37905);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r37879, b, MPFR_RNDN);
        ;
        mpfr_set_si(r37881, mpfr_cmp(r37879, r37880) <= 0, MPFR_RNDN);
        mpfr_neg(r37882, r37879, MPFR_RNDN);
        mpfr_set_d(r37883, a, MPFR_RNDN);
        mpfr_div(r37884, r37882, r37883, MPFR_RNDN);
        ;
        mpfr_set_si(r37886, mpfr_cmp(r37879, r37885) <= 0, MPFR_RNDN);
        mpfr_mul(r37887, r37879, r37879, MPFR_RNDN);
        ;
        mpfr_set_d(r37889, c, MPFR_RNDN);
        mpfr_mul(r37890, r37888, r37889, MPFR_RNDN);
        mpfr_mul(r37891, r37890, r37883, MPFR_RNDN);
        mpfr_sub(r37892, r37887, r37891, MPFR_RNDN);
        mpfr_sqrt(r37893, r37892, MPFR_RNDN);
        mpfr_neg(r37894, r37893, MPFR_RNDN);
        mpfr_add(r37895, r37879, r37894, MPFR_RNDN);
        ;
        mpfr_mul(r37897, r37896, r37883, MPFR_RNDN);
        mpfr_neg(r37898, r37897, MPFR_RNDN);
        mpfr_div(r37899, r37895, r37898, MPFR_RNDN);
        mpfr_div(r37900, r37889, r37879, MPFR_RNDN);
        ;
        mpfr_div(r37902, r37901, r37896, MPFR_RNDN);
        mpfr_mul(r37903, r37900, r37902, MPFR_RNDN);
        if (mpfr_get_si(r37886, MPFR_RNDN)) { mpfr_set(r37904, r37899, MPFR_RNDN); } else { mpfr_set(r37904, r37903, MPFR_RNDN); };
        if (mpfr_get_si(r37881, MPFR_RNDN)) { mpfr_set(r37905, r37884, MPFR_RNDN); } else { mpfr_set(r37905, r37904, MPFR_RNDN); };
        return mpfr_get_d(r37905, MPFR_RNDN);
}

static mpfr_t r37906, r37907, r37908, r37909, r37910, r37911, r37912, r37913, r37914, r37915, r37916, r37917, r37918, r37919, r37920, r37921, r37922, r37923, r37924, r37925, r37926, r37927, r37928, r37929, r37930, r37931, r37932;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r37906);
        mpfr_init_set_str(r37907, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r37908);
        mpfr_init(r37909);
        mpfr_init(r37910);
        mpfr_init(r37911);
        mpfr_init_set_str(r37912, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r37913);
        mpfr_init(r37914);
        mpfr_init_set_str(r37915, "4", 10, MPFR_RNDN);
        mpfr_init(r37916);
        mpfr_init(r37917);
        mpfr_init(r37918);
        mpfr_init(r37919);
        mpfr_init(r37920);
        mpfr_init(r37921);
        mpfr_init(r37922);
        mpfr_init_set_str(r37923, "2", 10, MPFR_RNDN);
        mpfr_init(r37924);
        mpfr_init(r37925);
        mpfr_init(r37926);
        mpfr_init(r37927);
        mpfr_init_set_str(r37928, "-2", 10, MPFR_RNDN);
        mpfr_init(r37929);
        mpfr_init(r37930);
        mpfr_init(r37931);
        mpfr_init(r37932);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r37906, b, MPFR_RNDN);
        ;
        mpfr_set_si(r37908, mpfr_cmp(r37906, r37907) <= 0, MPFR_RNDN);
        mpfr_neg(r37909, r37906, MPFR_RNDN);
        mpfr_set_d(r37910, a, MPFR_RNDN);
        mpfr_div(r37911, r37909, r37910, MPFR_RNDN);
        ;
        mpfr_set_si(r37913, mpfr_cmp(r37906, r37912) <= 0, MPFR_RNDN);
        mpfr_mul(r37914, r37906, r37906, MPFR_RNDN);
        ;
        mpfr_set_d(r37916, c, MPFR_RNDN);
        mpfr_mul(r37917, r37915, r37916, MPFR_RNDN);
        mpfr_mul(r37918, r37917, r37910, MPFR_RNDN);
        mpfr_sub(r37919, r37914, r37918, MPFR_RNDN);
        mpfr_sqrt(r37920, r37919, MPFR_RNDN);
        mpfr_neg(r37921, r37920, MPFR_RNDN);
        mpfr_add(r37922, r37906, r37921, MPFR_RNDN);
        ;
        mpfr_mul(r37924, r37923, r37910, MPFR_RNDN);
        mpfr_neg(r37925, r37924, MPFR_RNDN);
        mpfr_div(r37926, r37922, r37925, MPFR_RNDN);
        mpfr_div(r37927, r37916, r37906, MPFR_RNDN);
        ;
        mpfr_div(r37929, r37928, r37923, MPFR_RNDN);
        mpfr_mul(r37930, r37927, r37929, MPFR_RNDN);
        if (mpfr_get_si(r37913, MPFR_RNDN)) { mpfr_set(r37931, r37926, MPFR_RNDN); } else { mpfr_set(r37931, r37930, MPFR_RNDN); };
        if (mpfr_get_si(r37908, MPFR_RNDN)) { mpfr_set(r37932, r37911, MPFR_RNDN); } else { mpfr_set(r37932, r37931, MPFR_RNDN); };
        return mpfr_get_d(r37932, MPFR_RNDN);
}

