#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 r33806 = 2.0;
        float r33807 = sqrt(r33806);
        float r33808 = x;
        float r33809 = sin(r33808);
        float r33810 = y;
        float r33811 = sin(r33810);
        float r33812 = 16.0;
        float r33813 = r33811 / r33812;
        float r33814 = r33809 - r33813;
        float r33815 = r33807 * r33814;
        float r33816 = r33809 / r33812;
        float r33817 = r33811 - r33816;
        float r33818 = r33815 * r33817;
        float r33819 = cos(r33808);
        float r33820 = cos(r33810);
        float r33821 = r33819 - r33820;
        float r33822 = r33818 * r33821;
        float r33823 = r33806 + r33822;
        float r33824 = 3.0;
        float r33825 = 1.0;
        float r33826 = 5.0;
        float r33827 = sqrt(r33826);
        float r33828 = r33827 - r33825;
        float r33829 = r33828 / r33806;
        float r33830 = r33829 * r33819;
        float r33831 = r33825 + r33830;
        float r33832 = r33824 - r33827;
        float r33833 = r33832 / r33806;
        float r33834 = r33833 * r33820;
        float r33835 = r33831 + r33834;
        float r33836 = r33824 * r33835;
        float r33837 = r33823 / r33836;
        return r33837;
}

double f_id(double x, double y) {
        double r33838 = 2.0;
        double r33839 = sqrt(r33838);
        double r33840 = x;
        double r33841 = sin(r33840);
        double r33842 = y;
        double r33843 = sin(r33842);
        double r33844 = 16.0;
        double r33845 = r33843 / r33844;
        double r33846 = r33841 - r33845;
        double r33847 = r33839 * r33846;
        double r33848 = r33841 / r33844;
        double r33849 = r33843 - r33848;
        double r33850 = r33847 * r33849;
        double r33851 = cos(r33840);
        double r33852 = cos(r33842);
        double r33853 = r33851 - r33852;
        double r33854 = r33850 * r33853;
        double r33855 = r33838 + r33854;
        double r33856 = 3.0;
        double r33857 = 1.0;
        double r33858 = 5.0;
        double r33859 = sqrt(r33858);
        double r33860 = r33859 - r33857;
        double r33861 = r33860 / r33838;
        double r33862 = r33861 * r33851;
        double r33863 = r33857 + r33862;
        double r33864 = r33856 - r33859;
        double r33865 = r33864 / r33838;
        double r33866 = r33865 * r33852;
        double r33867 = r33863 + r33866;
        double r33868 = r33856 * r33867;
        double r33869 = r33855 / r33868;
        return r33869;
}


double f_of(float x, float y) {
        float r33870 = 2.0;
        float r33871 = sqrt(r33870);
        float r33872 = x;
        float r33873 = sin(r33872);
        float r33874 = y;
        float r33875 = sin(r33874);
        float r33876 = 16.0;
        float r33877 = r33875 / r33876;
        float r33878 = r33873 - r33877;
        float r33879 = r33871 * r33878;
        float r33880 = r33873 / r33876;
        float r33881 = r33875 - r33880;
        float r33882 = r33879 * r33881;
        float r33883 = cos(r33872);
        float r33884 = cos(r33874);
        float r33885 = r33883 - r33884;
        float r33886 = r33882 * r33885;
        float r33887 = cbrt(r33886);
        float r33888 = r33887 * r33887;
        float r33889 = r33888 * r33887;
        float r33890 = r33870 + r33889;
        float r33891 = 3.0;
        float r33892 = 1.0;
        float r33893 = 5.0;
        float r33894 = sqrt(r33893);
        float r33895 = r33894 - r33892;
        float r33896 = r33895 / r33870;
        float r33897 = r33896 * r33883;
        float r33898 = r33892 + r33897;
        float r33899 = r33891 * r33891;
        float r33900 = r33899 - r33893;
        float r33901 = r33891 + r33894;
        float r33902 = r33900 / r33901;
        float r33903 = r33902 / r33870;
        float r33904 = r33903 * r33884;
        float r33905 = r33898 + r33904;
        float r33906 = r33891 * r33905;
        float r33907 = r33890 / r33906;
        return r33907;
}

double f_od(double x, double y) {
        double r33908 = 2.0;
        double r33909 = sqrt(r33908);
        double r33910 = x;
        double r33911 = sin(r33910);
        double r33912 = y;
        double r33913 = sin(r33912);
        double r33914 = 16.0;
        double r33915 = r33913 / r33914;
        double r33916 = r33911 - r33915;
        double r33917 = r33909 * r33916;
        double r33918 = r33911 / r33914;
        double r33919 = r33913 - r33918;
        double r33920 = r33917 * r33919;
        double r33921 = cos(r33910);
        double r33922 = cos(r33912);
        double r33923 = r33921 - r33922;
        double r33924 = r33920 * r33923;
        double r33925 = cbrt(r33924);
        double r33926 = r33925 * r33925;
        double r33927 = r33926 * r33925;
        double r33928 = r33908 + r33927;
        double r33929 = 3.0;
        double r33930 = 1.0;
        double r33931 = 5.0;
        double r33932 = sqrt(r33931);
        double r33933 = r33932 - r33930;
        double r33934 = r33933 / r33908;
        double r33935 = r33934 * r33921;
        double r33936 = r33930 + r33935;
        double r33937 = r33929 * r33929;
        double r33938 = r33937 - r33931;
        double r33939 = r33929 + r33932;
        double r33940 = r33938 / r33939;
        double r33941 = r33940 / r33908;
        double r33942 = r33941 * r33922;
        double r33943 = r33936 + r33942;
        double r33944 = r33929 * r33943;
        double r33945 = r33928 / r33944;
        return r33945;
}

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 r33946, r33947, r33948, r33949, r33950, r33951, r33952, r33953, r33954, r33955, r33956, r33957, r33958, r33959, r33960, r33961, r33962, r33963, r33964, r33965, r33966, r33967, r33968, r33969, r33970, r33971, r33972, r33973, r33974, r33975, r33976, r33977;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33946, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33947);
        mpfr_init(r33948);
        mpfr_init(r33949);
        mpfr_init(r33950);
        mpfr_init(r33951);
        mpfr_init_set_str(r33952, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33953);
        mpfr_init(r33954);
        mpfr_init(r33955);
        mpfr_init(r33956);
        mpfr_init(r33957);
        mpfr_init(r33958);
        mpfr_init(r33959);
        mpfr_init(r33960);
        mpfr_init(r33961);
        mpfr_init(r33962);
        mpfr_init(r33963);
        mpfr_init_set_str(r33964, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33965, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33966, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33967);
        mpfr_init(r33968);
        mpfr_init(r33969);
        mpfr_init(r33970);
        mpfr_init(r33971);
        mpfr_init(r33972);
        mpfr_init(r33973);
        mpfr_init(r33974);
        mpfr_init(r33975);
        mpfr_init(r33976);
        mpfr_init(r33977);
}

double f_im(double x, double y) {
        ;
        mpfr_sqrt(r33947, r33946, MPFR_RNDN);
        mpfr_set_d(r33948, x, MPFR_RNDN);
        mpfr_sin(r33949, r33948, MPFR_RNDN);
        mpfr_set_d(r33950, y, MPFR_RNDN);
        mpfr_sin(r33951, r33950, MPFR_RNDN);
        ;
        mpfr_div(r33953, r33951, r33952, MPFR_RNDN);
        mpfr_sub(r33954, r33949, r33953, MPFR_RNDN);
        mpfr_mul(r33955, r33947, r33954, MPFR_RNDN);
        mpfr_div(r33956, r33949, r33952, MPFR_RNDN);
        mpfr_sub(r33957, r33951, r33956, MPFR_RNDN);
        mpfr_mul(r33958, r33955, r33957, MPFR_RNDN);
        mpfr_cos(r33959, r33948, MPFR_RNDN);
        mpfr_cos(r33960, r33950, MPFR_RNDN);
        mpfr_sub(r33961, r33959, r33960, MPFR_RNDN);
        mpfr_mul(r33962, r33958, r33961, MPFR_RNDN);
        mpfr_add(r33963, r33946, r33962, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33967, r33966, MPFR_RNDN);
        mpfr_sub(r33968, r33967, r33965, MPFR_RNDN);
        mpfr_div(r33969, r33968, r33946, MPFR_RNDN);
        mpfr_mul(r33970, r33969, r33959, MPFR_RNDN);
        mpfr_add(r33971, r33965, r33970, MPFR_RNDN);
        mpfr_sub(r33972, r33964, r33967, MPFR_RNDN);
        mpfr_div(r33973, r33972, r33946, MPFR_RNDN);
        mpfr_mul(r33974, r33973, r33960, MPFR_RNDN);
        mpfr_add(r33975, r33971, r33974, MPFR_RNDN);
        mpfr_mul(r33976, r33964, r33975, MPFR_RNDN);
        mpfr_div(r33977, r33963, r33976, MPFR_RNDN);
        return mpfr_get_d(r33977, MPFR_RNDN);
}

static mpfr_t r33978, r33979, r33980, r33981, r33982, r33983, r33984, r33985, r33986, r33987, r33988, r33989, r33990, r33991, r33992, r33993, r33994, r33995, r33996, r33997, r33998, r33999, r34000, r34001, r34002, r34003, r34004, r34005, r34006, r34007, r34008, r34009, r34010, r34011, r34012, r34013, r34014, r34015;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33978, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33979);
        mpfr_init(r33980);
        mpfr_init(r33981);
        mpfr_init(r33982);
        mpfr_init(r33983);
        mpfr_init_set_str(r33984, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33985);
        mpfr_init(r33986);
        mpfr_init(r33987);
        mpfr_init(r33988);
        mpfr_init(r33989);
        mpfr_init(r33990);
        mpfr_init(r33991);
        mpfr_init(r33992);
        mpfr_init(r33993);
        mpfr_init(r33994);
        mpfr_init(r33995);
        mpfr_init(r33996);
        mpfr_init(r33997);
        mpfr_init(r33998);
        mpfr_init_set_str(r33999, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34000, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34001, "5.0", 10, MPFR_RNDN);
        mpfr_init(r34002);
        mpfr_init(r34003);
        mpfr_init(r34004);
        mpfr_init(r34005);
        mpfr_init(r34006);
        mpfr_init(r34007);
        mpfr_init(r34008);
        mpfr_init(r34009);
        mpfr_init(r34010);
        mpfr_init(r34011);
        mpfr_init(r34012);
        mpfr_init(r34013);
        mpfr_init(r34014);
        mpfr_init(r34015);
}

double f_fm(double x, double y) {
        ;
        mpfr_sqrt(r33979, r33978, MPFR_RNDN);
        mpfr_set_d(r33980, x, MPFR_RNDN);
        mpfr_sin(r33981, r33980, MPFR_RNDN);
        mpfr_set_d(r33982, y, MPFR_RNDN);
        mpfr_sin(r33983, r33982, MPFR_RNDN);
        ;
        mpfr_div(r33985, r33983, r33984, MPFR_RNDN);
        mpfr_sub(r33986, r33981, r33985, MPFR_RNDN);
        mpfr_mul(r33987, r33979, r33986, MPFR_RNDN);
        mpfr_div(r33988, r33981, r33984, MPFR_RNDN);
        mpfr_sub(r33989, r33983, r33988, MPFR_RNDN);
        mpfr_mul(r33990, r33987, r33989, MPFR_RNDN);
        mpfr_cos(r33991, r33980, MPFR_RNDN);
        mpfr_cos(r33992, r33982, MPFR_RNDN);
        mpfr_sub(r33993, r33991, r33992, MPFR_RNDN);
        mpfr_mul(r33994, r33990, r33993, MPFR_RNDN);
        mpfr_cbrt(r33995, r33994, MPFR_RNDN);
        mpfr_mul(r33996, r33995, r33995, MPFR_RNDN);
        mpfr_mul(r33997, r33996, r33995, MPFR_RNDN);
        mpfr_add(r33998, r33978, r33997, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r34002, r34001, MPFR_RNDN);
        mpfr_sub(r34003, r34002, r34000, MPFR_RNDN);
        mpfr_div(r34004, r34003, r33978, MPFR_RNDN);
        mpfr_mul(r34005, r34004, r33991, MPFR_RNDN);
        mpfr_add(r34006, r34000, r34005, MPFR_RNDN);
        mpfr_mul(r34007, r33999, r33999, MPFR_RNDN);
        mpfr_sub(r34008, r34007, r34001, MPFR_RNDN);
        mpfr_add(r34009, r33999, r34002, MPFR_RNDN);
        mpfr_div(r34010, r34008, r34009, MPFR_RNDN);
        mpfr_div(r34011, r34010, r33978, MPFR_RNDN);
        mpfr_mul(r34012, r34011, r33992, MPFR_RNDN);
        mpfr_add(r34013, r34006, r34012, MPFR_RNDN);
        mpfr_mul(r34014, r33999, r34013, MPFR_RNDN);
        mpfr_div(r34015, r33998, r34014, MPFR_RNDN);
        return mpfr_get_d(r34015, MPFR_RNDN);
}

static mpfr_t r34016, r34017, r34018, r34019, r34020, r34021, r34022, r34023, r34024, r34025, r34026, r34027, r34028, r34029, r34030, r34031, r34032, r34033, r34034, r34035, r34036, r34037, r34038, r34039, r34040, r34041, r34042, r34043, r34044, r34045, r34046, r34047, r34048, r34049, r34050, r34051, r34052, r34053;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r34016, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34017);
        mpfr_init(r34018);
        mpfr_init(r34019);
        mpfr_init(r34020);
        mpfr_init(r34021);
        mpfr_init_set_str(r34022, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34023);
        mpfr_init(r34024);
        mpfr_init(r34025);
        mpfr_init(r34026);
        mpfr_init(r34027);
        mpfr_init(r34028);
        mpfr_init(r34029);
        mpfr_init(r34030);
        mpfr_init(r34031);
        mpfr_init(r34032);
        mpfr_init(r34033);
        mpfr_init(r34034);
        mpfr_init(r34035);
        mpfr_init(r34036);
        mpfr_init_set_str(r34037, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34038, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34039, "5.0", 10, MPFR_RNDN);
        mpfr_init(r34040);
        mpfr_init(r34041);
        mpfr_init(r34042);
        mpfr_init(r34043);
        mpfr_init(r34044);
        mpfr_init(r34045);
        mpfr_init(r34046);
        mpfr_init(r34047);
        mpfr_init(r34048);
        mpfr_init(r34049);
        mpfr_init(r34050);
        mpfr_init(r34051);
        mpfr_init(r34052);
        mpfr_init(r34053);
}

double f_dm(double x, double y) {
        ;
        mpfr_sqrt(r34017, r34016, MPFR_RNDN);
        mpfr_set_d(r34018, x, MPFR_RNDN);
        mpfr_sin(r34019, r34018, MPFR_RNDN);
        mpfr_set_d(r34020, y, MPFR_RNDN);
        mpfr_sin(r34021, r34020, MPFR_RNDN);
        ;
        mpfr_div(r34023, r34021, r34022, MPFR_RNDN);
        mpfr_sub(r34024, r34019, r34023, MPFR_RNDN);
        mpfr_mul(r34025, r34017, r34024, MPFR_RNDN);
        mpfr_div(r34026, r34019, r34022, MPFR_RNDN);
        mpfr_sub(r34027, r34021, r34026, MPFR_RNDN);
        mpfr_mul(r34028, r34025, r34027, MPFR_RNDN);
        mpfr_cos(r34029, r34018, MPFR_RNDN);
        mpfr_cos(r34030, r34020, MPFR_RNDN);
        mpfr_sub(r34031, r34029, r34030, MPFR_RNDN);
        mpfr_mul(r34032, r34028, r34031, MPFR_RNDN);
        mpfr_cbrt(r34033, r34032, MPFR_RNDN);
        mpfr_mul(r34034, r34033, r34033, MPFR_RNDN);
        mpfr_mul(r34035, r34034, r34033, MPFR_RNDN);
        mpfr_add(r34036, r34016, r34035, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r34040, r34039, MPFR_RNDN);
        mpfr_sub(r34041, r34040, r34038, MPFR_RNDN);
        mpfr_div(r34042, r34041, r34016, MPFR_RNDN);
        mpfr_mul(r34043, r34042, r34029, MPFR_RNDN);
        mpfr_add(r34044, r34038, r34043, MPFR_RNDN);
        mpfr_mul(r34045, r34037, r34037, MPFR_RNDN);
        mpfr_sub(r34046, r34045, r34039, MPFR_RNDN);
        mpfr_add(r34047, r34037, r34040, MPFR_RNDN);
        mpfr_div(r34048, r34046, r34047, MPFR_RNDN);
        mpfr_div(r34049, r34048, r34016, MPFR_RNDN);
        mpfr_mul(r34050, r34049, r34030, MPFR_RNDN);
        mpfr_add(r34051, r34044, r34050, MPFR_RNDN);
        mpfr_mul(r34052, r34037, r34051, MPFR_RNDN);
        mpfr_div(r34053, r34036, r34052, MPFR_RNDN);
        return mpfr_get_d(r34053, MPFR_RNDN);
}

