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

char *name = "Harley's example";

double f_if(float c_p, float c_n, float t, float s) {
        float r11563 = 1;
        float r11564 = s;
        float r11565 = -r11564;
        float r11566 = exp(r11565);
        float r11567 = r11563 + r11566;
        float r11568 = r11563 / r11567;
        float r11569 = c_p;
        float r11570 = pow(r11568, r11569);
        float r11571 = r11563 - r11568;
        float r11572 = c_n;
        float r11573 = pow(r11571, r11572);
        float r11574 = r11570 * r11573;
        float r11575 = t;
        float r11576 = -r11575;
        float r11577 = exp(r11576);
        float r11578 = r11563 + r11577;
        float r11579 = r11563 / r11578;
        float r11580 = pow(r11579, r11569);
        float r11581 = r11563 - r11579;
        float r11582 = pow(r11581, r11572);
        float r11583 = r11580 * r11582;
        float r11584 = r11574 / r11583;
        return r11584;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11585 = 1;
        double r11586 = s;
        double r11587 = -r11586;
        double r11588 = exp(r11587);
        double r11589 = r11585 + r11588;
        double r11590 = r11585 / r11589;
        double r11591 = c_p;
        double r11592 = pow(r11590, r11591);
        double r11593 = r11585 - r11590;
        double r11594 = c_n;
        double r11595 = pow(r11593, r11594);
        double r11596 = r11592 * r11595;
        double r11597 = t;
        double r11598 = -r11597;
        double r11599 = exp(r11598);
        double r11600 = r11585 + r11599;
        double r11601 = r11585 / r11600;
        double r11602 = pow(r11601, r11591);
        double r11603 = r11585 - r11601;
        double r11604 = pow(r11603, r11594);
        double r11605 = r11602 * r11604;
        double r11606 = r11596 / r11605;
        return r11606;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11607 = c_p;
        float r11608 = t;
        float r11609 = -r11608;
        float r11610 = exp(r11609);
        float r11611 = 1;
        float r11612 = r11610 + r11611;
        float r11613 = log(r11612);
        float r11614 = s;
        float r11615 = -r11614;
        float r11616 = exp(r11615);
        float r11617 = r11616 + r11611;
        float r11618 = log(r11617);
        float r11619 = r11613 - r11618;
        float r11620 = r11607 * r11619;
        float r11621 = c_n;
        float r11622 = r11611 / r11617;
        float r11623 = r11611 - r11622;
        float r11624 = log(r11623);
        float r11625 = r11611 / r11612;
        float r11626 = r11611 - r11625;
        float r11627 = log(r11626);
        float r11628 = r11624 - r11627;
        float r11629 = r11621 * r11628;
        float r11630 = r11620 + r11629;
        float r11631 = exp(r11630);
        return r11631;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11632 = c_p;
        double r11633 = t;
        double r11634 = -r11633;
        double r11635 = exp(r11634);
        double r11636 = 1;
        double r11637 = r11635 + r11636;
        double r11638 = log(r11637);
        double r11639 = s;
        double r11640 = -r11639;
        double r11641 = exp(r11640);
        double r11642 = r11641 + r11636;
        double r11643 = log(r11642);
        double r11644 = r11638 - r11643;
        double r11645 = r11632 * r11644;
        double r11646 = c_n;
        double r11647 = r11636 / r11642;
        double r11648 = r11636 - r11647;
        double r11649 = log(r11648);
        double r11650 = r11636 / r11637;
        double r11651 = r11636 - r11650;
        double r11652 = log(r11651);
        double r11653 = r11649 - r11652;
        double r11654 = r11646 * r11653;
        double r11655 = r11645 + r11654;
        double r11656 = exp(r11655);
        return r11656;
}

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 r11657, r11658, r11659, r11660, r11661, r11662, r11663, r11664, r11665, r11666, r11667, r11668, r11669, r11670, r11671, r11672, r11673, r11674, r11675, r11676, r11677, r11678;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11657, "1", 10, MPFR_RNDN);
        mpfr_init(r11658);
        mpfr_init(r11659);
        mpfr_init(r11660);
        mpfr_init(r11661);
        mpfr_init(r11662);
        mpfr_init(r11663);
        mpfr_init(r11664);
        mpfr_init(r11665);
        mpfr_init(r11666);
        mpfr_init(r11667);
        mpfr_init(r11668);
        mpfr_init(r11669);
        mpfr_init(r11670);
        mpfr_init(r11671);
        mpfr_init(r11672);
        mpfr_init(r11673);
        mpfr_init(r11674);
        mpfr_init(r11675);
        mpfr_init(r11676);
        mpfr_init(r11677);
        mpfr_init(r11678);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11658, s, MPFR_RNDN);
        mpfr_neg(r11659, r11658, MPFR_RNDN);
        mpfr_exp(r11660, r11659, MPFR_RNDN);
        mpfr_add(r11661, r11657, r11660, MPFR_RNDN);
        mpfr_div(r11662, r11657, r11661, MPFR_RNDN);
        mpfr_set_d(r11663, c_p, MPFR_RNDN);
        mpfr_pow(r11664, r11662, r11663, MPFR_RNDN);
        mpfr_sub(r11665, r11657, r11662, MPFR_RNDN);
        mpfr_set_d(r11666, c_n, MPFR_RNDN);
        mpfr_pow(r11667, r11665, r11666, MPFR_RNDN);
        mpfr_mul(r11668, r11664, r11667, MPFR_RNDN);
        mpfr_set_d(r11669, t, MPFR_RNDN);
        mpfr_neg(r11670, r11669, MPFR_RNDN);
        mpfr_exp(r11671, r11670, MPFR_RNDN);
        mpfr_add(r11672, r11657, r11671, MPFR_RNDN);
        mpfr_div(r11673, r11657, r11672, MPFR_RNDN);
        mpfr_pow(r11674, r11673, r11663, MPFR_RNDN);
        mpfr_sub(r11675, r11657, r11673, MPFR_RNDN);
        mpfr_pow(r11676, r11675, r11666, MPFR_RNDN);
        mpfr_mul(r11677, r11674, r11676, MPFR_RNDN);
        mpfr_div(r11678, r11668, r11677, MPFR_RNDN);
        return mpfr_get_d(r11678, MPFR_RNDN);
}

static mpfr_t r11679, r11680, r11681, r11682, r11683, r11684, r11685, r11686, r11687, r11688, r11689, r11690, r11691, r11692, r11693, r11694, r11695, r11696, r11697, r11698, r11699, r11700, r11701, r11702, r11703;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init(r11679);
        mpfr_init(r11680);
        mpfr_init(r11681);
        mpfr_init(r11682);
        mpfr_init_set_str(r11683, "1", 10, MPFR_RNDN);
        mpfr_init(r11684);
        mpfr_init(r11685);
        mpfr_init(r11686);
        mpfr_init(r11687);
        mpfr_init(r11688);
        mpfr_init(r11689);
        mpfr_init(r11690);
        mpfr_init(r11691);
        mpfr_init(r11692);
        mpfr_init(r11693);
        mpfr_init(r11694);
        mpfr_init(r11695);
        mpfr_init(r11696);
        mpfr_init(r11697);
        mpfr_init(r11698);
        mpfr_init(r11699);
        mpfr_init(r11700);
        mpfr_init(r11701);
        mpfr_init(r11702);
        mpfr_init(r11703);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r11679, c_p, MPFR_RNDN);
        mpfr_set_d(r11680, t, MPFR_RNDN);
        mpfr_neg(r11681, r11680, MPFR_RNDN);
        mpfr_exp(r11682, r11681, MPFR_RNDN);
        ;
        mpfr_add(r11684, r11682, r11683, MPFR_RNDN);
        mpfr_log(r11685, r11684, MPFR_RNDN);
        mpfr_set_d(r11686, s, MPFR_RNDN);
        mpfr_neg(r11687, r11686, MPFR_RNDN);
        mpfr_exp(r11688, r11687, MPFR_RNDN);
        mpfr_add(r11689, r11688, r11683, MPFR_RNDN);
        mpfr_log(r11690, r11689, MPFR_RNDN);
        mpfr_sub(r11691, r11685, r11690, MPFR_RNDN);
        mpfr_mul(r11692, r11679, r11691, MPFR_RNDN);
        mpfr_set_d(r11693, c_n, MPFR_RNDN);
        mpfr_div(r11694, r11683, r11689, MPFR_RNDN);
        mpfr_sub(r11695, r11683, r11694, MPFR_RNDN);
        mpfr_log(r11696, r11695, MPFR_RNDN);
        mpfr_div(r11697, r11683, r11684, MPFR_RNDN);
        mpfr_sub(r11698, r11683, r11697, MPFR_RNDN);
        mpfr_log(r11699, r11698, MPFR_RNDN);
        mpfr_sub(r11700, r11696, r11699, MPFR_RNDN);
        mpfr_mul(r11701, r11693, r11700, MPFR_RNDN);
        mpfr_add(r11702, r11692, r11701, MPFR_RNDN);
        mpfr_exp(r11703, r11702, MPFR_RNDN);
        return mpfr_get_d(r11703, MPFR_RNDN);
}

static mpfr_t r11704, r11705, r11706, r11707, r11708, r11709, r11710, r11711, r11712, r11713, r11714, r11715, r11716, r11717, r11718, r11719, r11720, r11721, r11722, r11723, r11724, r11725, r11726, r11727, r11728;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init(r11704);
        mpfr_init(r11705);
        mpfr_init(r11706);
        mpfr_init(r11707);
        mpfr_init_set_str(r11708, "1", 10, MPFR_RNDN);
        mpfr_init(r11709);
        mpfr_init(r11710);
        mpfr_init(r11711);
        mpfr_init(r11712);
        mpfr_init(r11713);
        mpfr_init(r11714);
        mpfr_init(r11715);
        mpfr_init(r11716);
        mpfr_init(r11717);
        mpfr_init(r11718);
        mpfr_init(r11719);
        mpfr_init(r11720);
        mpfr_init(r11721);
        mpfr_init(r11722);
        mpfr_init(r11723);
        mpfr_init(r11724);
        mpfr_init(r11725);
        mpfr_init(r11726);
        mpfr_init(r11727);
        mpfr_init(r11728);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r11704, c_p, MPFR_RNDN);
        mpfr_set_d(r11705, t, MPFR_RNDN);
        mpfr_neg(r11706, r11705, MPFR_RNDN);
        mpfr_exp(r11707, r11706, MPFR_RNDN);
        ;
        mpfr_add(r11709, r11707, r11708, MPFR_RNDN);
        mpfr_log(r11710, r11709, MPFR_RNDN);
        mpfr_set_d(r11711, s, MPFR_RNDN);
        mpfr_neg(r11712, r11711, MPFR_RNDN);
        mpfr_exp(r11713, r11712, MPFR_RNDN);
        mpfr_add(r11714, r11713, r11708, MPFR_RNDN);
        mpfr_log(r11715, r11714, MPFR_RNDN);
        mpfr_sub(r11716, r11710, r11715, MPFR_RNDN);
        mpfr_mul(r11717, r11704, r11716, MPFR_RNDN);
        mpfr_set_d(r11718, c_n, MPFR_RNDN);
        mpfr_div(r11719, r11708, r11714, MPFR_RNDN);
        mpfr_sub(r11720, r11708, r11719, MPFR_RNDN);
        mpfr_log(r11721, r11720, MPFR_RNDN);
        mpfr_div(r11722, r11708, r11709, MPFR_RNDN);
        mpfr_sub(r11723, r11708, r11722, MPFR_RNDN);
        mpfr_log(r11724, r11723, MPFR_RNDN);
        mpfr_sub(r11725, r11721, r11724, MPFR_RNDN);
        mpfr_mul(r11726, r11718, r11725, MPFR_RNDN);
        mpfr_add(r11727, r11717, r11726, MPFR_RNDN);
        mpfr_exp(r11728, r11727, MPFR_RNDN);
        return mpfr_get_d(r11728, MPFR_RNDN);
}

