#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 r33818 = 2.0;
        float r33819 = sqrt(r33818);
        float r33820 = x;
        float r33821 = sin(r33820);
        float r33822 = y;
        float r33823 = sin(r33822);
        float r33824 = 16.0;
        float r33825 = r33823 / r33824;
        float r33826 = r33821 - r33825;
        float r33827 = r33819 * r33826;
        float r33828 = r33821 / r33824;
        float r33829 = r33823 - r33828;
        float r33830 = r33827 * r33829;
        float r33831 = cos(r33820);
        float r33832 = cos(r33822);
        float r33833 = r33831 - r33832;
        float r33834 = r33830 * r33833;
        float r33835 = r33818 + r33834;
        float r33836 = 3.0;
        float r33837 = 1.0;
        float r33838 = 5.0;
        float r33839 = sqrt(r33838);
        float r33840 = r33839 - r33837;
        float r33841 = r33840 / r33818;
        float r33842 = r33841 * r33831;
        float r33843 = r33837 + r33842;
        float r33844 = r33836 - r33839;
        float r33845 = r33844 / r33818;
        float r33846 = r33845 * r33832;
        float r33847 = r33843 + r33846;
        float r33848 = r33836 * r33847;
        float r33849 = r33835 / r33848;
        return r33849;
}

double f_id(double x, double y) {
        double r33850 = 2.0;
        double r33851 = sqrt(r33850);
        double r33852 = x;
        double r33853 = sin(r33852);
        double r33854 = y;
        double r33855 = sin(r33854);
        double r33856 = 16.0;
        double r33857 = r33855 / r33856;
        double r33858 = r33853 - r33857;
        double r33859 = r33851 * r33858;
        double r33860 = r33853 / r33856;
        double r33861 = r33855 - r33860;
        double r33862 = r33859 * r33861;
        double r33863 = cos(r33852);
        double r33864 = cos(r33854);
        double r33865 = r33863 - r33864;
        double r33866 = r33862 * r33865;
        double r33867 = r33850 + r33866;
        double r33868 = 3.0;
        double r33869 = 1.0;
        double r33870 = 5.0;
        double r33871 = sqrt(r33870);
        double r33872 = r33871 - r33869;
        double r33873 = r33872 / r33850;
        double r33874 = r33873 * r33863;
        double r33875 = r33869 + r33874;
        double r33876 = r33868 - r33871;
        double r33877 = r33876 / r33850;
        double r33878 = r33877 * r33864;
        double r33879 = r33875 + r33878;
        double r33880 = r33868 * r33879;
        double r33881 = r33867 / r33880;
        return r33881;
}


double f_of(float x, float y) {
        float r33882 = 2.0;
        float r33883 = sqrt(r33882);
        float r33884 = x;
        float r33885 = sin(r33884);
        float r33886 = y;
        float r33887 = sin(r33886);
        float r33888 = 16.0;
        float r33889 = r33887 / r33888;
        float r33890 = r33885 - r33889;
        float r33891 = r33883 * r33890;
        float r33892 = cbrt(r33891);
        float r33893 = r33892 * r33892;
        float r33894 = r33893 * r33892;
        float r33895 = exp(r33894);
        float r33896 = log(r33895);
        float r33897 = r33885 / r33888;
        float r33898 = r33887 - r33897;
        float r33899 = r33896 * r33898;
        float r33900 = cos(r33884);
        float r33901 = cos(r33886);
        float r33902 = r33900 - r33901;
        float r33903 = r33899 * r33902;
        float r33904 = r33882 + r33903;
        float r33905 = 3.0;
        float r33906 = 1.0;
        float r33907 = 5.0;
        float r33908 = sqrt(r33907);
        float r33909 = r33908 - r33906;
        float r33910 = r33909 / r33882;
        float r33911 = r33910 * r33900;
        float r33912 = r33906 + r33911;
        float r33913 = r33905 * r33905;
        float r33914 = r33913 - r33907;
        float r33915 = r33905 + r33908;
        float r33916 = r33914 / r33915;
        float r33917 = r33916 / r33882;
        float r33918 = r33917 * r33901;
        float r33919 = r33912 + r33918;
        float r33920 = r33905 * r33919;
        float r33921 = r33904 / r33920;
        return r33921;
}

double f_od(double x, double y) {
        double r33922 = 2.0;
        double r33923 = sqrt(r33922);
        double r33924 = x;
        double r33925 = sin(r33924);
        double r33926 = y;
        double r33927 = sin(r33926);
        double r33928 = 16.0;
        double r33929 = r33927 / r33928;
        double r33930 = r33925 - r33929;
        double r33931 = r33923 * r33930;
        double r33932 = cbrt(r33931);
        double r33933 = r33932 * r33932;
        double r33934 = r33933 * r33932;
        double r33935 = exp(r33934);
        double r33936 = log(r33935);
        double r33937 = r33925 / r33928;
        double r33938 = r33927 - r33937;
        double r33939 = r33936 * r33938;
        double r33940 = cos(r33924);
        double r33941 = cos(r33926);
        double r33942 = r33940 - r33941;
        double r33943 = r33939 * r33942;
        double r33944 = r33922 + r33943;
        double r33945 = 3.0;
        double r33946 = 1.0;
        double r33947 = 5.0;
        double r33948 = sqrt(r33947);
        double r33949 = r33948 - r33946;
        double r33950 = r33949 / r33922;
        double r33951 = r33950 * r33940;
        double r33952 = r33946 + r33951;
        double r33953 = r33945 * r33945;
        double r33954 = r33953 - r33947;
        double r33955 = r33945 + r33948;
        double r33956 = r33954 / r33955;
        double r33957 = r33956 / r33922;
        double r33958 = r33957 * r33941;
        double r33959 = r33952 + r33958;
        double r33960 = r33945 * r33959;
        double r33961 = r33944 / r33960;
        return r33961;
}

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 r33962, r33963, r33964, r33965, r33966, r33967, r33968, r33969, r33970, r33971, r33972, r33973, r33974, r33975, r33976, r33977, r33978, r33979, r33980, r33981, r33982, r33983, r33984, r33985, r33986, r33987, r33988, r33989, r33990, r33991, r33992, r33993;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33962, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33963);
        mpfr_init(r33964);
        mpfr_init(r33965);
        mpfr_init(r33966);
        mpfr_init(r33967);
        mpfr_init_set_str(r33968, "16.0", 10, MPFR_RNDN);
        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);
        mpfr_init(r33978);
        mpfr_init(r33979);
        mpfr_init_set_str(r33980, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33981, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33982, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33983);
        mpfr_init(r33984);
        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);
}

double f_im(double x, double y) {
        ;
        mpfr_sqrt(r33963, r33962, MPFR_RNDN);
        mpfr_set_d(r33964, x, MPFR_RNDN);
        mpfr_sin(r33965, r33964, MPFR_RNDN);
        mpfr_set_d(r33966, y, MPFR_RNDN);
        mpfr_sin(r33967, r33966, MPFR_RNDN);
        ;
        mpfr_div(r33969, r33967, r33968, MPFR_RNDN);
        mpfr_sub(r33970, r33965, r33969, MPFR_RNDN);
        mpfr_mul(r33971, r33963, r33970, MPFR_RNDN);
        mpfr_div(r33972, r33965, r33968, MPFR_RNDN);
        mpfr_sub(r33973, r33967, r33972, MPFR_RNDN);
        mpfr_mul(r33974, r33971, r33973, MPFR_RNDN);
        mpfr_cos(r33975, r33964, MPFR_RNDN);
        mpfr_cos(r33976, r33966, MPFR_RNDN);
        mpfr_sub(r33977, r33975, r33976, MPFR_RNDN);
        mpfr_mul(r33978, r33974, r33977, MPFR_RNDN);
        mpfr_add(r33979, r33962, r33978, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33983, r33982, MPFR_RNDN);
        mpfr_sub(r33984, r33983, r33981, MPFR_RNDN);
        mpfr_div(r33985, r33984, r33962, MPFR_RNDN);
        mpfr_mul(r33986, r33985, r33975, MPFR_RNDN);
        mpfr_add(r33987, r33981, r33986, MPFR_RNDN);
        mpfr_sub(r33988, r33980, r33983, MPFR_RNDN);
        mpfr_div(r33989, r33988, r33962, MPFR_RNDN);
        mpfr_mul(r33990, r33989, r33976, MPFR_RNDN);
        mpfr_add(r33991, r33987, r33990, MPFR_RNDN);
        mpfr_mul(r33992, r33980, r33991, MPFR_RNDN);
        mpfr_div(r33993, r33979, r33992, MPFR_RNDN);
        return mpfr_get_d(r33993, MPFR_RNDN);
}

static mpfr_t r33994, r33995, r33996, r33997, r33998, r33999, r34000, r34001, r34002, r34003, r34004, r34005, r34006, r34007, r34008, r34009, r34010, r34011, r34012, r34013, r34014, r34015, r34016, r34017, r34018, r34019, r34020, r34021, r34022, r34023, r34024, r34025, r34026, r34027, r34028, r34029, r34030, r34031, r34032, r34033;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33994, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33995);
        mpfr_init(r33996);
        mpfr_init(r33997);
        mpfr_init(r33998);
        mpfr_init(r33999);
        mpfr_init_set_str(r34000, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34001);
        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);
        mpfr_init(r34016);
        mpfr_init_set_str(r34017, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34018, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34019, "5.0", 10, MPFR_RNDN);
        mpfr_init(r34020);
        mpfr_init(r34021);
        mpfr_init(r34022);
        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);
}

double f_fm(double x, double y) {
        ;
        mpfr_sqrt(r33995, r33994, MPFR_RNDN);
        mpfr_set_d(r33996, x, MPFR_RNDN);
        mpfr_sin(r33997, r33996, MPFR_RNDN);
        mpfr_set_d(r33998, y, MPFR_RNDN);
        mpfr_sin(r33999, r33998, MPFR_RNDN);
        ;
        mpfr_div(r34001, r33999, r34000, MPFR_RNDN);
        mpfr_sub(r34002, r33997, r34001, MPFR_RNDN);
        mpfr_mul(r34003, r33995, r34002, MPFR_RNDN);
        mpfr_cbrt(r34004, r34003, MPFR_RNDN);
        mpfr_mul(r34005, r34004, r34004, MPFR_RNDN);
        mpfr_mul(r34006, r34005, r34004, MPFR_RNDN);
        mpfr_exp(r34007, r34006, MPFR_RNDN);
        mpfr_log(r34008, r34007, MPFR_RNDN);
        mpfr_div(r34009, r33997, r34000, MPFR_RNDN);
        mpfr_sub(r34010, r33999, r34009, MPFR_RNDN);
        mpfr_mul(r34011, r34008, r34010, MPFR_RNDN);
        mpfr_cos(r34012, r33996, MPFR_RNDN);
        mpfr_cos(r34013, r33998, MPFR_RNDN);
        mpfr_sub(r34014, r34012, r34013, MPFR_RNDN);
        mpfr_mul(r34015, r34011, r34014, MPFR_RNDN);
        mpfr_add(r34016, r33994, r34015, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r34020, r34019, MPFR_RNDN);
        mpfr_sub(r34021, r34020, r34018, MPFR_RNDN);
        mpfr_div(r34022, r34021, r33994, MPFR_RNDN);
        mpfr_mul(r34023, r34022, r34012, MPFR_RNDN);
        mpfr_add(r34024, r34018, r34023, MPFR_RNDN);
        mpfr_mul(r34025, r34017, r34017, MPFR_RNDN);
        mpfr_sub(r34026, r34025, r34019, MPFR_RNDN);
        mpfr_add(r34027, r34017, r34020, MPFR_RNDN);
        mpfr_div(r34028, r34026, r34027, MPFR_RNDN);
        mpfr_div(r34029, r34028, r33994, MPFR_RNDN);
        mpfr_mul(r34030, r34029, r34013, MPFR_RNDN);
        mpfr_add(r34031, r34024, r34030, MPFR_RNDN);
        mpfr_mul(r34032, r34017, r34031, MPFR_RNDN);
        mpfr_div(r34033, r34016, r34032, MPFR_RNDN);
        return mpfr_get_d(r34033, MPFR_RNDN);
}

static mpfr_t r34034, r34035, r34036, r34037, r34038, r34039, r34040, r34041, r34042, r34043, r34044, r34045, r34046, r34047, r34048, r34049, r34050, r34051, r34052, r34053, r34054, r34055, r34056, r34057, r34058, r34059, r34060, r34061, r34062, r34063, r34064, r34065, r34066, r34067, r34068, r34069, r34070, r34071, r34072, r34073;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r34034, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34035);
        mpfr_init(r34036);
        mpfr_init(r34037);
        mpfr_init(r34038);
        mpfr_init(r34039);
        mpfr_init_set_str(r34040, "16.0", 10, MPFR_RNDN);
        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);
        mpfr_init(r34054);
        mpfr_init(r34055);
        mpfr_init(r34056);
        mpfr_init_set_str(r34057, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34058, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34059, "5.0", 10, MPFR_RNDN);
        mpfr_init(r34060);
        mpfr_init(r34061);
        mpfr_init(r34062);
        mpfr_init(r34063);
        mpfr_init(r34064);
        mpfr_init(r34065);
        mpfr_init(r34066);
        mpfr_init(r34067);
        mpfr_init(r34068);
        mpfr_init(r34069);
        mpfr_init(r34070);
        mpfr_init(r34071);
        mpfr_init(r34072);
        mpfr_init(r34073);
}

double f_dm(double x, double y) {
        ;
        mpfr_sqrt(r34035, r34034, MPFR_RNDN);
        mpfr_set_d(r34036, x, MPFR_RNDN);
        mpfr_sin(r34037, r34036, MPFR_RNDN);
        mpfr_set_d(r34038, y, MPFR_RNDN);
        mpfr_sin(r34039, r34038, MPFR_RNDN);
        ;
        mpfr_div(r34041, r34039, r34040, MPFR_RNDN);
        mpfr_sub(r34042, r34037, r34041, MPFR_RNDN);
        mpfr_mul(r34043, r34035, r34042, MPFR_RNDN);
        mpfr_cbrt(r34044, r34043, MPFR_RNDN);
        mpfr_mul(r34045, r34044, r34044, MPFR_RNDN);
        mpfr_mul(r34046, r34045, r34044, MPFR_RNDN);
        mpfr_exp(r34047, r34046, MPFR_RNDN);
        mpfr_log(r34048, r34047, MPFR_RNDN);
        mpfr_div(r34049, r34037, r34040, MPFR_RNDN);
        mpfr_sub(r34050, r34039, r34049, MPFR_RNDN);
        mpfr_mul(r34051, r34048, r34050, MPFR_RNDN);
        mpfr_cos(r34052, r34036, MPFR_RNDN);
        mpfr_cos(r34053, r34038, MPFR_RNDN);
        mpfr_sub(r34054, r34052, r34053, MPFR_RNDN);
        mpfr_mul(r34055, r34051, r34054, MPFR_RNDN);
        mpfr_add(r34056, r34034, r34055, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r34060, r34059, MPFR_RNDN);
        mpfr_sub(r34061, r34060, r34058, MPFR_RNDN);
        mpfr_div(r34062, r34061, r34034, MPFR_RNDN);
        mpfr_mul(r34063, r34062, r34052, MPFR_RNDN);
        mpfr_add(r34064, r34058, r34063, MPFR_RNDN);
        mpfr_mul(r34065, r34057, r34057, MPFR_RNDN);
        mpfr_sub(r34066, r34065, r34059, MPFR_RNDN);
        mpfr_add(r34067, r34057, r34060, MPFR_RNDN);
        mpfr_div(r34068, r34066, r34067, MPFR_RNDN);
        mpfr_div(r34069, r34068, r34034, MPFR_RNDN);
        mpfr_mul(r34070, r34069, r34053, MPFR_RNDN);
        mpfr_add(r34071, r34064, r34070, MPFR_RNDN);
        mpfr_mul(r34072, r34057, r34071, MPFR_RNDN);
        mpfr_div(r34073, r34056, r34072, MPFR_RNDN);
        return mpfr_get_d(r34073, MPFR_RNDN);
}

