#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 r33450 = 2.0;
        float r33451 = sqrt(r33450);
        float r33452 = x;
        float r33453 = sin(r33452);
        float r33454 = y;
        float r33455 = sin(r33454);
        float r33456 = 16.0;
        float r33457 = r33455 / r33456;
        float r33458 = r33453 - r33457;
        float r33459 = r33451 * r33458;
        float r33460 = r33453 / r33456;
        float r33461 = r33455 - r33460;
        float r33462 = r33459 * r33461;
        float r33463 = cos(r33452);
        float r33464 = cos(r33454);
        float r33465 = r33463 - r33464;
        float r33466 = r33462 * r33465;
        float r33467 = r33450 + r33466;
        float r33468 = 3.0;
        float r33469 = 1.0;
        float r33470 = 5.0;
        float r33471 = sqrt(r33470);
        float r33472 = r33471 - r33469;
        float r33473 = r33472 / r33450;
        float r33474 = r33473 * r33463;
        float r33475 = r33469 + r33474;
        float r33476 = r33468 - r33471;
        float r33477 = r33476 / r33450;
        float r33478 = r33477 * r33464;
        float r33479 = r33475 + r33478;
        float r33480 = r33468 * r33479;
        float r33481 = r33467 / r33480;
        return r33481;
}

double f_id(double x, double y) {
        double r33482 = 2.0;
        double r33483 = sqrt(r33482);
        double r33484 = x;
        double r33485 = sin(r33484);
        double r33486 = y;
        double r33487 = sin(r33486);
        double r33488 = 16.0;
        double r33489 = r33487 / r33488;
        double r33490 = r33485 - r33489;
        double r33491 = r33483 * r33490;
        double r33492 = r33485 / r33488;
        double r33493 = r33487 - r33492;
        double r33494 = r33491 * r33493;
        double r33495 = cos(r33484);
        double r33496 = cos(r33486);
        double r33497 = r33495 - r33496;
        double r33498 = r33494 * r33497;
        double r33499 = r33482 + r33498;
        double r33500 = 3.0;
        double r33501 = 1.0;
        double r33502 = 5.0;
        double r33503 = sqrt(r33502);
        double r33504 = r33503 - r33501;
        double r33505 = r33504 / r33482;
        double r33506 = r33505 * r33495;
        double r33507 = r33501 + r33506;
        double r33508 = r33500 - r33503;
        double r33509 = r33508 / r33482;
        double r33510 = r33509 * r33496;
        double r33511 = r33507 + r33510;
        double r33512 = r33500 * r33511;
        double r33513 = r33499 / r33512;
        return r33513;
}


double f_of(float x, float y) {
        float r33514 = 2.0;
        float r33515 = sqrt(r33514);
        float r33516 = x;
        float r33517 = sin(r33516);
        float r33518 = y;
        float r33519 = sin(r33518);
        float r33520 = 16.0;
        float r33521 = r33519 / r33520;
        float r33522 = r33517 - r33521;
        float r33523 = r33515 * r33522;
        float r33524 = r33517 / r33520;
        float r33525 = r33519 - r33524;
        float r33526 = r33523 * r33525;
        float r33527 = cos(r33516);
        float r33528 = cos(r33518);
        float r33529 = r33527 - r33528;
        float r33530 = r33526 * r33529;
        float r33531 = r33514 + r33530;
        float r33532 = 3.0;
        float r33533 = 1.0;
        float r33534 = 5.0;
        float r33535 = sqrt(r33534);
        float r33536 = r33535 - r33533;
        float r33537 = r33536 / r33514;
        float r33538 = r33537 * r33527;
        float r33539 = r33533 + r33538;
        float r33540 = r33532 * r33532;
        float r33541 = r33540 - r33534;
        float r33542 = r33532 + r33535;
        float r33543 = r33541 / r33542;
        float r33544 = r33543 / r33514;
        float r33545 = r33544 * r33528;
        float r33546 = r33539 + r33545;
        float r33547 = r33532 * r33546;
        float r33548 = r33531 / r33547;
        return r33548;
}

double f_od(double x, double y) {
        double r33549 = 2.0;
        double r33550 = sqrt(r33549);
        double r33551 = x;
        double r33552 = sin(r33551);
        double r33553 = y;
        double r33554 = sin(r33553);
        double r33555 = 16.0;
        double r33556 = r33554 / r33555;
        double r33557 = r33552 - r33556;
        double r33558 = r33550 * r33557;
        double r33559 = r33552 / r33555;
        double r33560 = r33554 - r33559;
        double r33561 = r33558 * r33560;
        double r33562 = cos(r33551);
        double r33563 = cos(r33553);
        double r33564 = r33562 - r33563;
        double r33565 = r33561 * r33564;
        double r33566 = r33549 + r33565;
        double r33567 = 3.0;
        double r33568 = 1.0;
        double r33569 = 5.0;
        double r33570 = sqrt(r33569);
        double r33571 = r33570 - r33568;
        double r33572 = r33571 / r33549;
        double r33573 = r33572 * r33562;
        double r33574 = r33568 + r33573;
        double r33575 = r33567 * r33567;
        double r33576 = r33575 - r33569;
        double r33577 = r33567 + r33570;
        double r33578 = r33576 / r33577;
        double r33579 = r33578 / r33549;
        double r33580 = r33579 * r33563;
        double r33581 = r33574 + r33580;
        double r33582 = r33567 * r33581;
        double r33583 = r33566 / r33582;
        return r33583;
}

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 r33584, r33585, r33586, r33587, r33588, r33589, r33590, r33591, r33592, r33593, r33594, r33595, r33596, r33597, r33598, r33599, r33600, r33601, r33602, r33603, r33604, r33605, r33606, r33607, r33608, r33609, r33610, r33611, r33612, r33613, r33614, r33615;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33584, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33585);
        mpfr_init(r33586);
        mpfr_init(r33587);
        mpfr_init(r33588);
        mpfr_init(r33589);
        mpfr_init_set_str(r33590, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33591);
        mpfr_init(r33592);
        mpfr_init(r33593);
        mpfr_init(r33594);
        mpfr_init(r33595);
        mpfr_init(r33596);
        mpfr_init(r33597);
        mpfr_init(r33598);
        mpfr_init(r33599);
        mpfr_init(r33600);
        mpfr_init(r33601);
        mpfr_init_set_str(r33602, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33603, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33604, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33605);
        mpfr_init(r33606);
        mpfr_init(r33607);
        mpfr_init(r33608);
        mpfr_init(r33609);
        mpfr_init(r33610);
        mpfr_init(r33611);
        mpfr_init(r33612);
        mpfr_init(r33613);
        mpfr_init(r33614);
        mpfr_init(r33615);
}

double f_im(double x, double y) {
        ;
        mpfr_sqrt(r33585, r33584, MPFR_RNDN);
        mpfr_set_d(r33586, x, MPFR_RNDN);
        mpfr_sin(r33587, r33586, MPFR_RNDN);
        mpfr_set_d(r33588, y, MPFR_RNDN);
        mpfr_sin(r33589, r33588, MPFR_RNDN);
        ;
        mpfr_div(r33591, r33589, r33590, MPFR_RNDN);
        mpfr_sub(r33592, r33587, r33591, MPFR_RNDN);
        mpfr_mul(r33593, r33585, r33592, MPFR_RNDN);
        mpfr_div(r33594, r33587, r33590, MPFR_RNDN);
        mpfr_sub(r33595, r33589, r33594, MPFR_RNDN);
        mpfr_mul(r33596, r33593, r33595, MPFR_RNDN);
        mpfr_cos(r33597, r33586, MPFR_RNDN);
        mpfr_cos(r33598, r33588, MPFR_RNDN);
        mpfr_sub(r33599, r33597, r33598, MPFR_RNDN);
        mpfr_mul(r33600, r33596, r33599, MPFR_RNDN);
        mpfr_add(r33601, r33584, r33600, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33605, r33604, MPFR_RNDN);
        mpfr_sub(r33606, r33605, r33603, MPFR_RNDN);
        mpfr_div(r33607, r33606, r33584, MPFR_RNDN);
        mpfr_mul(r33608, r33607, r33597, MPFR_RNDN);
        mpfr_add(r33609, r33603, r33608, MPFR_RNDN);
        mpfr_sub(r33610, r33602, r33605, MPFR_RNDN);
        mpfr_div(r33611, r33610, r33584, MPFR_RNDN);
        mpfr_mul(r33612, r33611, r33598, MPFR_RNDN);
        mpfr_add(r33613, r33609, r33612, MPFR_RNDN);
        mpfr_mul(r33614, r33602, r33613, MPFR_RNDN);
        mpfr_div(r33615, r33601, r33614, MPFR_RNDN);
        return mpfr_get_d(r33615, MPFR_RNDN);
}

static mpfr_t r33616, r33617, r33618, r33619, r33620, r33621, r33622, r33623, r33624, r33625, r33626, r33627, r33628, r33629, r33630, r33631, r33632, r33633, r33634, r33635, r33636, r33637, r33638, r33639, r33640, r33641, r33642, r33643, r33644, r33645, r33646, r33647, r33648, r33649, r33650;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33616, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33617);
        mpfr_init(r33618);
        mpfr_init(r33619);
        mpfr_init(r33620);
        mpfr_init(r33621);
        mpfr_init_set_str(r33622, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33623);
        mpfr_init(r33624);
        mpfr_init(r33625);
        mpfr_init(r33626);
        mpfr_init(r33627);
        mpfr_init(r33628);
        mpfr_init(r33629);
        mpfr_init(r33630);
        mpfr_init(r33631);
        mpfr_init(r33632);
        mpfr_init(r33633);
        mpfr_init_set_str(r33634, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33635, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33636, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33637);
        mpfr_init(r33638);
        mpfr_init(r33639);
        mpfr_init(r33640);
        mpfr_init(r33641);
        mpfr_init(r33642);
        mpfr_init(r33643);
        mpfr_init(r33644);
        mpfr_init(r33645);
        mpfr_init(r33646);
        mpfr_init(r33647);
        mpfr_init(r33648);
        mpfr_init(r33649);
        mpfr_init(r33650);
}

double f_fm(double x, double y) {
        ;
        mpfr_sqrt(r33617, r33616, MPFR_RNDN);
        mpfr_set_d(r33618, x, MPFR_RNDN);
        mpfr_sin(r33619, r33618, MPFR_RNDN);
        mpfr_set_d(r33620, y, MPFR_RNDN);
        mpfr_sin(r33621, r33620, MPFR_RNDN);
        ;
        mpfr_div(r33623, r33621, r33622, MPFR_RNDN);
        mpfr_sub(r33624, r33619, r33623, MPFR_RNDN);
        mpfr_mul(r33625, r33617, r33624, MPFR_RNDN);
        mpfr_div(r33626, r33619, r33622, MPFR_RNDN);
        mpfr_sub(r33627, r33621, r33626, MPFR_RNDN);
        mpfr_mul(r33628, r33625, r33627, MPFR_RNDN);
        mpfr_cos(r33629, r33618, MPFR_RNDN);
        mpfr_cos(r33630, r33620, MPFR_RNDN);
        mpfr_sub(r33631, r33629, r33630, MPFR_RNDN);
        mpfr_mul(r33632, r33628, r33631, MPFR_RNDN);
        mpfr_add(r33633, r33616, r33632, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33637, r33636, MPFR_RNDN);
        mpfr_sub(r33638, r33637, r33635, MPFR_RNDN);
        mpfr_div(r33639, r33638, r33616, MPFR_RNDN);
        mpfr_mul(r33640, r33639, r33629, MPFR_RNDN);
        mpfr_add(r33641, r33635, r33640, MPFR_RNDN);
        mpfr_mul(r33642, r33634, r33634, MPFR_RNDN);
        mpfr_sub(r33643, r33642, r33636, MPFR_RNDN);
        mpfr_add(r33644, r33634, r33637, MPFR_RNDN);
        mpfr_div(r33645, r33643, r33644, MPFR_RNDN);
        mpfr_div(r33646, r33645, r33616, MPFR_RNDN);
        mpfr_mul(r33647, r33646, r33630, MPFR_RNDN);
        mpfr_add(r33648, r33641, r33647, MPFR_RNDN);
        mpfr_mul(r33649, r33634, r33648, MPFR_RNDN);
        mpfr_div(r33650, r33633, r33649, MPFR_RNDN);
        return mpfr_get_d(r33650, MPFR_RNDN);
}

static mpfr_t r33651, r33652, r33653, r33654, r33655, r33656, r33657, r33658, r33659, r33660, r33661, r33662, r33663, r33664, r33665, r33666, r33667, r33668, r33669, r33670, r33671, r33672, r33673, r33674, r33675, r33676, r33677, r33678, r33679, r33680, r33681, r33682, r33683, r33684, r33685;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33651, "2.0", 10, MPFR_RNDN);
        mpfr_init(r33652);
        mpfr_init(r33653);
        mpfr_init(r33654);
        mpfr_init(r33655);
        mpfr_init(r33656);
        mpfr_init_set_str(r33657, "16.0", 10, MPFR_RNDN);
        mpfr_init(r33658);
        mpfr_init(r33659);
        mpfr_init(r33660);
        mpfr_init(r33661);
        mpfr_init(r33662);
        mpfr_init(r33663);
        mpfr_init(r33664);
        mpfr_init(r33665);
        mpfr_init(r33666);
        mpfr_init(r33667);
        mpfr_init(r33668);
        mpfr_init_set_str(r33669, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33670, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r33671, "5.0", 10, MPFR_RNDN);
        mpfr_init(r33672);
        mpfr_init(r33673);
        mpfr_init(r33674);
        mpfr_init(r33675);
        mpfr_init(r33676);
        mpfr_init(r33677);
        mpfr_init(r33678);
        mpfr_init(r33679);
        mpfr_init(r33680);
        mpfr_init(r33681);
        mpfr_init(r33682);
        mpfr_init(r33683);
        mpfr_init(r33684);
        mpfr_init(r33685);
}

double f_dm(double x, double y) {
        ;
        mpfr_sqrt(r33652, r33651, MPFR_RNDN);
        mpfr_set_d(r33653, x, MPFR_RNDN);
        mpfr_sin(r33654, r33653, MPFR_RNDN);
        mpfr_set_d(r33655, y, MPFR_RNDN);
        mpfr_sin(r33656, r33655, MPFR_RNDN);
        ;
        mpfr_div(r33658, r33656, r33657, MPFR_RNDN);
        mpfr_sub(r33659, r33654, r33658, MPFR_RNDN);
        mpfr_mul(r33660, r33652, r33659, MPFR_RNDN);
        mpfr_div(r33661, r33654, r33657, MPFR_RNDN);
        mpfr_sub(r33662, r33656, r33661, MPFR_RNDN);
        mpfr_mul(r33663, r33660, r33662, MPFR_RNDN);
        mpfr_cos(r33664, r33653, MPFR_RNDN);
        mpfr_cos(r33665, r33655, MPFR_RNDN);
        mpfr_sub(r33666, r33664, r33665, MPFR_RNDN);
        mpfr_mul(r33667, r33663, r33666, MPFR_RNDN);
        mpfr_add(r33668, r33651, r33667, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_sqrt(r33672, r33671, MPFR_RNDN);
        mpfr_sub(r33673, r33672, r33670, MPFR_RNDN);
        mpfr_div(r33674, r33673, r33651, MPFR_RNDN);
        mpfr_mul(r33675, r33674, r33664, MPFR_RNDN);
        mpfr_add(r33676, r33670, r33675, MPFR_RNDN);
        mpfr_mul(r33677, r33669, r33669, MPFR_RNDN);
        mpfr_sub(r33678, r33677, r33671, MPFR_RNDN);
        mpfr_add(r33679, r33669, r33672, MPFR_RNDN);
        mpfr_div(r33680, r33678, r33679, MPFR_RNDN);
        mpfr_div(r33681, r33680, r33651, MPFR_RNDN);
        mpfr_mul(r33682, r33681, r33665, MPFR_RNDN);
        mpfr_add(r33683, r33676, r33682, MPFR_RNDN);
        mpfr_mul(r33684, r33669, r33683, MPFR_RNDN);
        mpfr_div(r33685, r33668, r33684, MPFR_RNDN);
        return mpfr_get_d(r33685, MPFR_RNDN);
}

