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

char *name = "Diagrams.TwoD.Path.Metafont.Internal:hobbyF from diagrams-contrib-1.3.0.5";

double f_if(float x, float y) {
        float r49765 = 2.0f;
        float r49766 = sqrt(r49765);
        float r49767 = x;
        float r49768 = sin(r49767);
        float r49769 = y;
        float r49770 = sin(r49769);
        float r49771 = 16.0f;
        float r49772 = r49770 / r49771;
        float r49773 = r49768 - r49772;
        float r49774 = r49766 * r49773;
        float r49775 = r49768 / r49771;
        float r49776 = r49770 - r49775;
        float r49777 = r49774 * r49776;
        float r49778 = cos(r49767);
        float r49779 = cos(r49769);
        float r49780 = r49778 - r49779;
        float r49781 = r49777 * r49780;
        float r49782 = r49765 + r49781;
        float r49783 = 3.0f;
        float r49784 = 1.0f;
        float r49785 = 5.0f;
        float r49786 = sqrt(r49785);
        float r49787 = r49786 - r49784;
        float r49788 = r49787 / r49765;
        float r49789 = r49788 * r49778;
        float r49790 = r49784 + r49789;
        float r49791 = r49783 - r49786;
        float r49792 = r49791 / r49765;
        float r49793 = r49792 * r49779;
        float r49794 = r49790 + r49793;
        float r49795 = r49783 * r49794;
        float r49796 = r49782 / r49795;
        return r49796;
}

double f_id(double x, double y) {
        double r49797 = 2.0;
        double r49798 = sqrt(r49797);
        double r49799 = x;
        double r49800 = sin(r49799);
        double r49801 = y;
        double r49802 = sin(r49801);
        double r49803 = 16.0;
        double r49804 = r49802 / r49803;
        double r49805 = r49800 - r49804;
        double r49806 = r49798 * r49805;
        double r49807 = r49800 / r49803;
        double r49808 = r49802 - r49807;
        double r49809 = r49806 * r49808;
        double r49810 = cos(r49799);
        double r49811 = cos(r49801);
        double r49812 = r49810 - r49811;
        double r49813 = r49809 * r49812;
        double r49814 = r49797 + r49813;
        double r49815 = 3.0;
        double r49816 = 1.0;
        double r49817 = 5.0;
        double r49818 = sqrt(r49817);
        double r49819 = r49818 - r49816;
        double r49820 = r49819 / r49797;
        double r49821 = r49820 * r49810;
        double r49822 = r49816 + r49821;
        double r49823 = r49815 - r49818;
        double r49824 = r49823 / r49797;
        double r49825 = r49824 * r49811;
        double r49826 = r49822 + r49825;
        double r49827 = r49815 * r49826;
        double r49828 = r49814 / r49827;
        return r49828;
}


double f_of(float x, float y) {
        float r49829 = 2.0f;
        float r49830 = sqrt(r49829);
        float r49831 = x;
        float r49832 = sin(r49831);
        float r49833 = y;
        float r49834 = sin(r49833);
        float r49835 = 16.0f;
        float r49836 = r49834 / r49835;
        float r49837 = r49832 - r49836;
        float r49838 = r49830 * r49837;
        float r49839 = cbrt(r49838);
        float r49840 = r49839 * (r49839 * r49839);
        float r49841 = r49832 / r49835;
        float r49842 = r49834 - r49841;
        float r49843 = r49840 * r49842;
        float r49844 = cos(r49831);
        float r49845 = cos(r49833);
        float r49846 = r49844 - r49845;
        float r49847 = r49843 * r49846;
        float r49848 = r49829 + r49847;
        float r49849 = 3.0f;
        float r49850 = 1.0f;
        float r49851 = 5.0f;
        float r49852 = sqrt(r49851);
        float r49853 = r49852 - r49850;
        float r49854 = r49853 / r49829;
        float r49855 = r49854 * r49844;
        float r49856 = r49850 + r49855;
        float r49857 = r49849 - r49852;
        float r49858 = r49857 / r49829;
        float r49859 = r49858 * r49845;
        float r49860 = r49856 + r49859;
        float r49861 = r49849 * r49860;
        float r49862 = r49848 / r49861;
        return r49862;
}

double f_od(double x, double y) {
        double r49863 = 2.0;
        double r49864 = sqrt(r49863);
        double r49865 = x;
        double r49866 = sin(r49865);
        double r49867 = y;
        double r49868 = sin(r49867);
        double r49869 = 16.0;
        double r49870 = r49868 / r49869;
        double r49871 = r49866 - r49870;
        double r49872 = r49864 * r49871;
        double r49873 = cbrt(r49872);
        double r49874 = r49873 * (r49873 * r49873);
        double r49875 = r49866 / r49869;
        double r49876 = r49868 - r49875;
        double r49877 = r49874 * r49876;
        double r49878 = cos(r49865);
        double r49879 = cos(r49867);
        double r49880 = r49878 - r49879;
        double r49881 = r49877 * r49880;
        double r49882 = r49863 + r49881;
        double r49883 = 3.0;
        double r49884 = 1.0;
        double r49885 = 5.0;
        double r49886 = sqrt(r49885);
        double r49887 = r49886 - r49884;
        double r49888 = r49887 / r49863;
        double r49889 = r49888 * r49878;
        double r49890 = r49884 + r49889;
        double r49891 = r49883 - r49886;
        double r49892 = r49891 / r49863;
        double r49893 = r49892 * r49879;
        double r49894 = r49890 + r49893;
        double r49895 = r49883 * r49894;
        double r49896 = r49882 / r49895;
        return r49896;
}

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 r49897, r49898, r49899, r49900, r49901, r49902, r49903, r49904, r49905, r49906, r49907, r49908, r49909, r49910, r49911, r49912, r49913, r49914, r49915, r49916, r49917, r49918, r49919, r49920, r49921, r49922, r49923, r49924, r49925, r49926, r49927, r49928;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r49897, "2.0", 10, MPFR_RNDN);
        mpfr_init(r49898);
        mpfr_init(r49899);
        mpfr_init(r49900);
        mpfr_init(r49901);
        mpfr_init(r49902);
        mpfr_init_set_str(r49903, "16.0", 10, MPFR_RNDN);
        mpfr_init(r49904);
        mpfr_init(r49905);
        mpfr_init(r49906);
        mpfr_init(r49907);
        mpfr_init(r49908);
        mpfr_init(r49909);
        mpfr_init(r49910);
        mpfr_init(r49911);
        mpfr_init(r49912);
        mpfr_init(r49913);
        mpfr_init(r49914);
        mpfr_init_set_str(r49915, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r49916, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r49917, "5.0", 10, MPFR_RNDN);
        mpfr_init(r49918);
        mpfr_init(r49919);
        mpfr_init(r49920);
        mpfr_init(r49921);
        mpfr_init(r49922);
        mpfr_init(r49923);
        mpfr_init(r49924);
        mpfr_init(r49925);
        mpfr_init(r49926);
        mpfr_init(r49927);
        mpfr_init(r49928);
}

double f_im(double x, double y) {
        ;
        mpfr_sqrt(r49898, r49897, MPFR_RNDN);
        mpfr_set_d(r49899, x, MPFR_RNDN);
        mpfr_sin(r49900, r49899, MPFR_RNDN);
        mpfr_set_d(r49901, y, MPFR_RNDN);
        mpfr_sin(r49902, r49901, MPFR_RNDN);
        ;
        mpfr_div(r49904, r49902, r49903, MPFR_RNDN);
        mpfr_sub(r49905, r49900, r49904, MPFR_RNDN);
        mpfr_mul(r49906, r49898, r49905, MPFR_RNDN);
        mpfr_div(r49907, r49900, r49903, MPFR_RNDN);
        mpfr_sub(r49908, r49902, r49907, MPFR_RNDN);
        mpfr_mul(r49909, r49906, r49908, MPFR_RNDN);
        mpfr_cos(r49910, r49899, MPFR_RNDN);
        mpfr_cos(r49911, r49901, MPFR_RNDN);
        mpfr_sub(r49912, r49910, r49911, MPFR_RNDN);
        mpfr_mul(r49913, r49909, r49912, MPFR_RNDN);
        mpfr_add(r49914, r49897, r49913, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r49918, r49917, MPFR_RNDN);
        mpfr_sub(r49919, r49918, r49916, MPFR_RNDN);
        mpfr_div(r49920, r49919, r49897, MPFR_RNDN);
        mpfr_mul(r49921, r49920, r49910, MPFR_RNDN);
        mpfr_add(r49922, r49916, r49921, MPFR_RNDN);
        mpfr_sub(r49923, r49915, r49918, MPFR_RNDN);
        mpfr_div(r49924, r49923, r49897, MPFR_RNDN);
        mpfr_mul(r49925, r49924, r49911, MPFR_RNDN);
        mpfr_add(r49926, r49922, r49925, MPFR_RNDN);
        mpfr_mul(r49927, r49915, r49926, MPFR_RNDN);
        mpfr_div(r49928, r49914, r49927, MPFR_RNDN);
        return mpfr_get_d(r49928, MPFR_RNDN);
}

static mpfr_t r49929, r49930, r49931, r49932, r49933, r49934, r49935, r49936, r49937, r49938, r49939, r49940, r49941, r49942, r49943, r49944, r49945, r49946, r49947, r49948, r49949, r49950, r49951, r49952, r49953, r49954, r49955, r49956, r49957, r49958, r49959, r49960, r49961, r49962;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r49929, "2.0", 10, MPFR_RNDN);
        mpfr_init(r49930);
        mpfr_init(r49931);
        mpfr_init(r49932);
        mpfr_init(r49933);
        mpfr_init(r49934);
        mpfr_init_set_str(r49935, "16.0", 10, MPFR_RNDN);
        mpfr_init(r49936);
        mpfr_init(r49937);
        mpfr_init(r49938);
        mpfr_init(r49939);
        mpfr_init(r49940);
        mpfr_init(r49941);
        mpfr_init(r49942);
        mpfr_init(r49943);
        mpfr_init(r49944);
        mpfr_init(r49945);
        mpfr_init(r49946);
        mpfr_init(r49947);
        mpfr_init(r49948);
        mpfr_init_set_str(r49949, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r49950, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r49951, "5.0", 10, MPFR_RNDN);
        mpfr_init(r49952);
        mpfr_init(r49953);
        mpfr_init(r49954);
        mpfr_init(r49955);
        mpfr_init(r49956);
        mpfr_init(r49957);
        mpfr_init(r49958);
        mpfr_init(r49959);
        mpfr_init(r49960);
        mpfr_init(r49961);
        mpfr_init(r49962);
}

double f_fm(double x, double y) {
        ;
        mpfr_sqrt(r49930, r49929, MPFR_RNDN);
        mpfr_set_d(r49931, x, MPFR_RNDN);
        mpfr_sin(r49932, r49931, MPFR_RNDN);
        mpfr_set_d(r49933, y, MPFR_RNDN);
        mpfr_sin(r49934, r49933, MPFR_RNDN);
        ;
        mpfr_div(r49936, r49934, r49935, MPFR_RNDN);
        mpfr_sub(r49937, r49932, r49936, MPFR_RNDN);
        mpfr_mul(r49938, r49930, r49937, MPFR_RNDN);
        mpfr_cbrt(r49939, r49938, MPFR_RNDN);
        mpfr_mul(r49940, r49939, r49939, MPFR_RNDN); mpfr_mul(r49940, r49940, r49939, MPFR_RNDN);
        mpfr_div(r49941, r49932, r49935, MPFR_RNDN);
        mpfr_sub(r49942, r49934, r49941, MPFR_RNDN);
        mpfr_mul(r49943, r49940, r49942, MPFR_RNDN);
        mpfr_cos(r49944, r49931, MPFR_RNDN);
        mpfr_cos(r49945, r49933, MPFR_RNDN);
        mpfr_sub(r49946, r49944, r49945, MPFR_RNDN);
        mpfr_mul(r49947, r49943, r49946, MPFR_RNDN);
        mpfr_add(r49948, r49929, r49947, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r49952, r49951, MPFR_RNDN);
        mpfr_sub(r49953, r49952, r49950, MPFR_RNDN);
        mpfr_div(r49954, r49953, r49929, MPFR_RNDN);
        mpfr_mul(r49955, r49954, r49944, MPFR_RNDN);
        mpfr_add(r49956, r49950, r49955, MPFR_RNDN);
        mpfr_sub(r49957, r49949, r49952, MPFR_RNDN);
        mpfr_div(r49958, r49957, r49929, MPFR_RNDN);
        mpfr_mul(r49959, r49958, r49945, MPFR_RNDN);
        mpfr_add(r49960, r49956, r49959, MPFR_RNDN);
        mpfr_mul(r49961, r49949, r49960, MPFR_RNDN);
        mpfr_div(r49962, r49948, r49961, MPFR_RNDN);
        return mpfr_get_d(r49962, MPFR_RNDN);
}

static mpfr_t r49963, r49964, r49965, r49966, r49967, r49968, r49969, r49970, r49971, r49972, r49973, r49974, r49975, r49976, r49977, r49978, r49979, r49980, r49981, r49982, r49983, r49984, r49985, r49986, r49987, r49988, r49989, r49990, r49991, r49992, r49993, r49994, r49995, r49996;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r49963, "2.0", 10, MPFR_RNDN);
        mpfr_init(r49964);
        mpfr_init(r49965);
        mpfr_init(r49966);
        mpfr_init(r49967);
        mpfr_init(r49968);
        mpfr_init_set_str(r49969, "16.0", 10, MPFR_RNDN);
        mpfr_init(r49970);
        mpfr_init(r49971);
        mpfr_init(r49972);
        mpfr_init(r49973);
        mpfr_init(r49974);
        mpfr_init(r49975);
        mpfr_init(r49976);
        mpfr_init(r49977);
        mpfr_init(r49978);
        mpfr_init(r49979);
        mpfr_init(r49980);
        mpfr_init(r49981);
        mpfr_init(r49982);
        mpfr_init_set_str(r49983, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r49984, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r49985, "5.0", 10, MPFR_RNDN);
        mpfr_init(r49986);
        mpfr_init(r49987);
        mpfr_init(r49988);
        mpfr_init(r49989);
        mpfr_init(r49990);
        mpfr_init(r49991);
        mpfr_init(r49992);
        mpfr_init(r49993);
        mpfr_init(r49994);
        mpfr_init(r49995);
        mpfr_init(r49996);
}

double f_dm(double x, double y) {
        ;
        mpfr_sqrt(r49964, r49963, MPFR_RNDN);
        mpfr_set_d(r49965, x, MPFR_RNDN);
        mpfr_sin(r49966, r49965, MPFR_RNDN);
        mpfr_set_d(r49967, y, MPFR_RNDN);
        mpfr_sin(r49968, r49967, MPFR_RNDN);
        ;
        mpfr_div(r49970, r49968, r49969, MPFR_RNDN);
        mpfr_sub(r49971, r49966, r49970, MPFR_RNDN);
        mpfr_mul(r49972, r49964, r49971, MPFR_RNDN);
        mpfr_cbrt(r49973, r49972, MPFR_RNDN);
        mpfr_mul(r49974, r49973, r49973, MPFR_RNDN); mpfr_mul(r49974, r49974, r49973, MPFR_RNDN);
        mpfr_div(r49975, r49966, r49969, MPFR_RNDN);
        mpfr_sub(r49976, r49968, r49975, MPFR_RNDN);
        mpfr_mul(r49977, r49974, r49976, MPFR_RNDN);
        mpfr_cos(r49978, r49965, MPFR_RNDN);
        mpfr_cos(r49979, r49967, MPFR_RNDN);
        mpfr_sub(r49980, r49978, r49979, MPFR_RNDN);
        mpfr_mul(r49981, r49977, r49980, MPFR_RNDN);
        mpfr_add(r49982, r49963, r49981, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r49986, r49985, MPFR_RNDN);
        mpfr_sub(r49987, r49986, r49984, MPFR_RNDN);
        mpfr_div(r49988, r49987, r49963, MPFR_RNDN);
        mpfr_mul(r49989, r49988, r49978, MPFR_RNDN);
        mpfr_add(r49990, r49984, r49989, MPFR_RNDN);
        mpfr_sub(r49991, r49983, r49986, MPFR_RNDN);
        mpfr_div(r49992, r49991, r49963, MPFR_RNDN);
        mpfr_mul(r49993, r49992, r49979, MPFR_RNDN);
        mpfr_add(r49994, r49990, r49993, MPFR_RNDN);
        mpfr_mul(r49995, r49983, r49994, MPFR_RNDN);
        mpfr_div(r49996, r49982, r49995, MPFR_RNDN);
        return mpfr_get_d(r49996, MPFR_RNDN);
}

