#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 r33561 = 2.0;
        float r33562 = sqrt(r33561);
        float r33563 = x;
        float r33564 = sin(r33563);
        float r33565 = y;
        float r33566 = sin(r33565);
        float r33567 = 16.0;
        float r33568 = r33566 / r33567;
        float r33569 = r33564 - r33568;
        float r33570 = r33562 * r33569;
        float r33571 = r33564 / r33567;
        float r33572 = r33566 - r33571;
        float r33573 = r33570 * r33572;
        float r33574 = cos(r33563);
        float r33575 = cos(r33565);
        float r33576 = r33574 - r33575;
        float r33577 = r33573 * r33576;
        float r33578 = r33561 + r33577;
        float r33579 = 3.0;
        float r33580 = 1.0;
        float r33581 = 5.0;
        float r33582 = sqrt(r33581);
        float r33583 = r33582 - r33580;
        float r33584 = r33583 / r33561;
        float r33585 = r33584 * r33574;
        float r33586 = r33580 + r33585;
        float r33587 = r33579 - r33582;
        float r33588 = r33587 / r33561;
        float r33589 = r33588 * r33575;
        float r33590 = r33586 + r33589;
        float r33591 = r33579 * r33590;
        float r33592 = r33578 / r33591;
        return r33592;
}

double f_id(double x, double y) {
        double r33593 = 2.0;
        double r33594 = sqrt(r33593);
        double r33595 = x;
        double r33596 = sin(r33595);
        double r33597 = y;
        double r33598 = sin(r33597);
        double r33599 = 16.0;
        double r33600 = r33598 / r33599;
        double r33601 = r33596 - r33600;
        double r33602 = r33594 * r33601;
        double r33603 = r33596 / r33599;
        double r33604 = r33598 - r33603;
        double r33605 = r33602 * r33604;
        double r33606 = cos(r33595);
        double r33607 = cos(r33597);
        double r33608 = r33606 - r33607;
        double r33609 = r33605 * r33608;
        double r33610 = r33593 + r33609;
        double r33611 = 3.0;
        double r33612 = 1.0;
        double r33613 = 5.0;
        double r33614 = sqrt(r33613);
        double r33615 = r33614 - r33612;
        double r33616 = r33615 / r33593;
        double r33617 = r33616 * r33606;
        double r33618 = r33612 + r33617;
        double r33619 = r33611 - r33614;
        double r33620 = r33619 / r33593;
        double r33621 = r33620 * r33607;
        double r33622 = r33618 + r33621;
        double r33623 = r33611 * r33622;
        double r33624 = r33610 / r33623;
        return r33624;
}


double f_of(float x, float y) {
        float r33625 = 2.0;
        float r33626 = sqrt(r33625);
        float r33627 = x;
        float r33628 = sin(r33627);
        float r33629 = y;
        float r33630 = sin(r33629);
        float r33631 = 16.0;
        float r33632 = r33630 / r33631;
        float r33633 = r33628 - r33632;
        float r33634 = r33626 * r33633;
        float r33635 = r33628 / r33631;
        float r33636 = r33630 - r33635;
        float r33637 = r33634 * r33636;
        float r33638 = cos(r33627);
        float r33639 = cos(r33629);
        float r33640 = r33638 - r33639;
        float r33641 = r33637 * r33640;
        float r33642 = r33625 + r33641;
        float r33643 = 3.0;
        float r33644 = 1.0;
        float r33645 = 5.0;
        float r33646 = sqrt(r33645);
        float r33647 = r33646 - r33644;
        float r33648 = r33647 / r33625;
        float r33649 = r33648 * r33638;
        float r33650 = r33644 + r33649;
        float r33651 = r33643 * r33643;
        float r33652 = r33651 - r33645;
        float r33653 = r33643 + r33646;
        float r33654 = r33652 / r33653;
        float r33655 = r33654 / r33625;
        float r33656 = r33655 * r33639;
        float r33657 = r33650 + r33656;
        float r33658 = r33643 * r33657;
        float r33659 = r33642 / r33658;
        return r33659;
}

double f_od(double x, double y) {
        double r33660 = 2.0;
        double r33661 = sqrt(r33660);
        double r33662 = x;
        double r33663 = sin(r33662);
        double r33664 = y;
        double r33665 = sin(r33664);
        double r33666 = 16.0;
        double r33667 = r33665 / r33666;
        double r33668 = r33663 - r33667;
        double r33669 = r33661 * r33668;
        double r33670 = r33663 / r33666;
        double r33671 = r33665 - r33670;
        double r33672 = r33669 * r33671;
        double r33673 = cos(r33662);
        double r33674 = cos(r33664);
        double r33675 = r33673 - r33674;
        double r33676 = r33672 * r33675;
        double r33677 = r33660 + r33676;
        double r33678 = 3.0;
        double r33679 = 1.0;
        double r33680 = 5.0;
        double r33681 = sqrt(r33680);
        double r33682 = r33681 - r33679;
        double r33683 = r33682 / r33660;
        double r33684 = r33683 * r33673;
        double r33685 = r33679 + r33684;
        double r33686 = r33678 * r33678;
        double r33687 = r33686 - r33680;
        double r33688 = r33678 + r33681;
        double r33689 = r33687 / r33688;
        double r33690 = r33689 / r33660;
        double r33691 = r33690 * r33674;
        double r33692 = r33685 + r33691;
        double r33693 = r33678 * r33692;
        double r33694 = r33677 / r33693;
        return r33694;
}

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 r33695, r33696, r33697, r33698, r33699, r33700, r33701, r33702, r33703, r33704, r33705, r33706, r33707, r33708, r33709, r33710, r33711, r33712, r33713, r33714, r33715, r33716, r33717, r33718, r33719, r33720, r33721, r33722, r33723, r33724, r33725, r33726;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33695, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33696);
        mpfr_init(r33697);
        mpfr_init(r33698);
        mpfr_init(r33699);
        mpfr_init(r33700);
        mpfr_init_set_str(r33701, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33702);
        mpfr_init(r33703);
        mpfr_init(r33704);
        mpfr_init(r33705);
        mpfr_init(r33706);
        mpfr_init(r33707);
        mpfr_init(r33708);
        mpfr_init(r33709);
        mpfr_init(r33710);
        mpfr_init(r33711);
        mpfr_init(r33712);
        mpfr_init_set_str(r33713, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33714, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33715, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33716);
        mpfr_init(r33717);
        mpfr_init(r33718);
        mpfr_init(r33719);
        mpfr_init(r33720);
        mpfr_init(r33721);
        mpfr_init(r33722);
        mpfr_init(r33723);
        mpfr_init(r33724);
        mpfr_init(r33725);
        mpfr_init(r33726);
}

double f_im(double x, double y) {
        ;
        mpfr_sqrt(r33696, r33695, MPFR_RNDN);
        mpfr_set_d(r33697, x, MPFR_RNDN);
        mpfr_sin(r33698, r33697, MPFR_RNDN);
        mpfr_set_d(r33699, y, MPFR_RNDN);
        mpfr_sin(r33700, r33699, MPFR_RNDN);
        ;
        mpfr_div(r33702, r33700, r33701, MPFR_RNDN);
        mpfr_sub(r33703, r33698, r33702, MPFR_RNDN);
        mpfr_mul(r33704, r33696, r33703, MPFR_RNDN);
        mpfr_div(r33705, r33698, r33701, MPFR_RNDN);
        mpfr_sub(r33706, r33700, r33705, MPFR_RNDN);
        mpfr_mul(r33707, r33704, r33706, MPFR_RNDN);
        mpfr_cos(r33708, r33697, MPFR_RNDN);
        mpfr_cos(r33709, r33699, MPFR_RNDN);
        mpfr_sub(r33710, r33708, r33709, MPFR_RNDN);
        mpfr_mul(r33711, r33707, r33710, MPFR_RNDN);
        mpfr_add(r33712, r33695, r33711, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33716, r33715, MPFR_RNDN);
        mpfr_sub(r33717, r33716, r33714, MPFR_RNDN);
        mpfr_div(r33718, r33717, r33695, MPFR_RNDN);
        mpfr_mul(r33719, r33718, r33708, MPFR_RNDN);
        mpfr_add(r33720, r33714, r33719, MPFR_RNDN);
        mpfr_sub(r33721, r33713, r33716, MPFR_RNDN);
        mpfr_div(r33722, r33721, r33695, MPFR_RNDN);
        mpfr_mul(r33723, r33722, r33709, MPFR_RNDN);
        mpfr_add(r33724, r33720, r33723, MPFR_RNDN);
        mpfr_mul(r33725, r33713, r33724, MPFR_RNDN);
        mpfr_div(r33726, r33712, r33725, MPFR_RNDN);
        return mpfr_get_d(r33726, MPFR_RNDN);
}

static mpfr_t r33727, r33728, r33729, r33730, r33731, r33732, r33733, r33734, r33735, r33736, r33737, r33738, r33739, r33740, r33741, r33742, r33743, r33744, r33745, r33746, r33747, r33748, r33749, r33750, r33751, r33752, r33753, r33754, r33755, r33756, r33757, r33758, r33759, r33760, r33761;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33727, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33728);
        mpfr_init(r33729);
        mpfr_init(r33730);
        mpfr_init(r33731);
        mpfr_init(r33732);
        mpfr_init_set_str(r33733, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33734);
        mpfr_init(r33735);
        mpfr_init(r33736);
        mpfr_init(r33737);
        mpfr_init(r33738);
        mpfr_init(r33739);
        mpfr_init(r33740);
        mpfr_init(r33741);
        mpfr_init(r33742);
        mpfr_init(r33743);
        mpfr_init(r33744);
        mpfr_init_set_str(r33745, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33746, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33747, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33748);
        mpfr_init(r33749);
        mpfr_init(r33750);
        mpfr_init(r33751);
        mpfr_init(r33752);
        mpfr_init(r33753);
        mpfr_init(r33754);
        mpfr_init(r33755);
        mpfr_init(r33756);
        mpfr_init(r33757);
        mpfr_init(r33758);
        mpfr_init(r33759);
        mpfr_init(r33760);
        mpfr_init(r33761);
}

double f_fm(double x, double y) {
        ;
        mpfr_sqrt(r33728, r33727, MPFR_RNDN);
        mpfr_set_d(r33729, x, MPFR_RNDN);
        mpfr_sin(r33730, r33729, MPFR_RNDN);
        mpfr_set_d(r33731, y, MPFR_RNDN);
        mpfr_sin(r33732, r33731, MPFR_RNDN);
        ;
        mpfr_div(r33734, r33732, r33733, MPFR_RNDN);
        mpfr_sub(r33735, r33730, r33734, MPFR_RNDN);
        mpfr_mul(r33736, r33728, r33735, MPFR_RNDN);
        mpfr_div(r33737, r33730, r33733, MPFR_RNDN);
        mpfr_sub(r33738, r33732, r33737, MPFR_RNDN);
        mpfr_mul(r33739, r33736, r33738, MPFR_RNDN);
        mpfr_cos(r33740, r33729, MPFR_RNDN);
        mpfr_cos(r33741, r33731, MPFR_RNDN);
        mpfr_sub(r33742, r33740, r33741, MPFR_RNDN);
        mpfr_mul(r33743, r33739, r33742, MPFR_RNDN);
        mpfr_add(r33744, r33727, r33743, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33748, r33747, MPFR_RNDN);
        mpfr_sub(r33749, r33748, r33746, MPFR_RNDN);
        mpfr_div(r33750, r33749, r33727, MPFR_RNDN);
        mpfr_mul(r33751, r33750, r33740, MPFR_RNDN);
        mpfr_add(r33752, r33746, r33751, MPFR_RNDN);
        mpfr_mul(r33753, r33745, r33745, MPFR_RNDN);
        mpfr_sub(r33754, r33753, r33747, MPFR_RNDN);
        mpfr_add(r33755, r33745, r33748, MPFR_RNDN);
        mpfr_div(r33756, r33754, r33755, MPFR_RNDN);
        mpfr_div(r33757, r33756, r33727, MPFR_RNDN);
        mpfr_mul(r33758, r33757, r33741, MPFR_RNDN);
        mpfr_add(r33759, r33752, r33758, MPFR_RNDN);
        mpfr_mul(r33760, r33745, r33759, MPFR_RNDN);
        mpfr_div(r33761, r33744, r33760, MPFR_RNDN);
        return mpfr_get_d(r33761, MPFR_RNDN);
}

static mpfr_t r33762, r33763, r33764, r33765, r33766, r33767, r33768, r33769, r33770, r33771, r33772, r33773, r33774, r33775, r33776, r33777, r33778, r33779, r33780, r33781, r33782, r33783, r33784, r33785, r33786, r33787, r33788, r33789, r33790, r33791, r33792, r33793, r33794, r33795, r33796;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33762, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33763);
        mpfr_init(r33764);
        mpfr_init(r33765);
        mpfr_init(r33766);
        mpfr_init(r33767);
        mpfr_init_set_str(r33768, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33769);
        mpfr_init(r33770);
        mpfr_init(r33771);
        mpfr_init(r33772);
        mpfr_init(r33773);
        mpfr_init(r33774);
        mpfr_init(r33775);
        mpfr_init(r33776);
        mpfr_init(r33777);
        mpfr_init(r33778);
        mpfr_init(r33779);
        mpfr_init_set_str(r33780, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33781, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33782, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33783);
        mpfr_init(r33784);
        mpfr_init(r33785);
        mpfr_init(r33786);
        mpfr_init(r33787);
        mpfr_init(r33788);
        mpfr_init(r33789);
        mpfr_init(r33790);
        mpfr_init(r33791);
        mpfr_init(r33792);
        mpfr_init(r33793);
        mpfr_init(r33794);
        mpfr_init(r33795);
        mpfr_init(r33796);
}

double f_dm(double x, double y) {
        ;
        mpfr_sqrt(r33763, r33762, MPFR_RNDN);
        mpfr_set_d(r33764, x, MPFR_RNDN);
        mpfr_sin(r33765, r33764, MPFR_RNDN);
        mpfr_set_d(r33766, y, MPFR_RNDN);
        mpfr_sin(r33767, r33766, MPFR_RNDN);
        ;
        mpfr_div(r33769, r33767, r33768, MPFR_RNDN);
        mpfr_sub(r33770, r33765, r33769, MPFR_RNDN);
        mpfr_mul(r33771, r33763, r33770, MPFR_RNDN);
        mpfr_div(r33772, r33765, r33768, MPFR_RNDN);
        mpfr_sub(r33773, r33767, r33772, MPFR_RNDN);
        mpfr_mul(r33774, r33771, r33773, MPFR_RNDN);
        mpfr_cos(r33775, r33764, MPFR_RNDN);
        mpfr_cos(r33776, r33766, MPFR_RNDN);
        mpfr_sub(r33777, r33775, r33776, MPFR_RNDN);
        mpfr_mul(r33778, r33774, r33777, MPFR_RNDN);
        mpfr_add(r33779, r33762, r33778, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33783, r33782, MPFR_RNDN);
        mpfr_sub(r33784, r33783, r33781, MPFR_RNDN);
        mpfr_div(r33785, r33784, r33762, MPFR_RNDN);
        mpfr_mul(r33786, r33785, r33775, MPFR_RNDN);
        mpfr_add(r33787, r33781, r33786, MPFR_RNDN);
        mpfr_mul(r33788, r33780, r33780, MPFR_RNDN);
        mpfr_sub(r33789, r33788, r33782, MPFR_RNDN);
        mpfr_add(r33790, r33780, r33783, MPFR_RNDN);
        mpfr_div(r33791, r33789, r33790, MPFR_RNDN);
        mpfr_div(r33792, r33791, r33762, MPFR_RNDN);
        mpfr_mul(r33793, r33792, r33776, MPFR_RNDN);
        mpfr_add(r33794, r33787, r33793, MPFR_RNDN);
        mpfr_mul(r33795, r33780, r33794, MPFR_RNDN);
        mpfr_div(r33796, r33779, r33795, MPFR_RNDN);
        return mpfr_get_d(r33796, MPFR_RNDN);
}

