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

char *name = "Toniolo and Linder, Equation (13)";

double f_if(float n, float U, float t, float l, float Om, float U_) {
        float r22565 = 2;
        float r22566 = n;
        float r22567 = r22565 * r22566;
        float r22568 = U;
        float r22569 = r22567 * r22568;
        float r22570 = t;
        float r22571 = l;
        float r22572 = r22571 * r22571;
        float r22573 = Om;
        float r22574 = r22572 / r22573;
        float r22575 = r22565 * r22574;
        float r22576 = r22570 - r22575;
        float r22577 = r22571 / r22573;
        float r22578 = pow(r22577, r22565);
        float r22579 = r22566 * r22578;
        float r22580 = U_;
        float r22581 = r22568 - r22580;
        float r22582 = r22579 * r22581;
        float r22583 = r22576 - r22582;
        float r22584 = r22569 * r22583;
        float r22585 = sqrt(r22584);
        return r22585;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r22586 = 2;
        double r22587 = n;
        double r22588 = r22586 * r22587;
        double r22589 = U;
        double r22590 = r22588 * r22589;
        double r22591 = t;
        double r22592 = l;
        double r22593 = r22592 * r22592;
        double r22594 = Om;
        double r22595 = r22593 / r22594;
        double r22596 = r22586 * r22595;
        double r22597 = r22591 - r22596;
        double r22598 = r22592 / r22594;
        double r22599 = pow(r22598, r22586);
        double r22600 = r22587 * r22599;
        double r22601 = U_;
        double r22602 = r22589 - r22601;
        double r22603 = r22600 * r22602;
        double r22604 = r22597 - r22603;
        double r22605 = r22590 * r22604;
        double r22606 = sqrt(r22605);
        return r22606;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r22607 = n;
        float r22608 = 2;
        float r22609 = r22607 * r22608;
        float r22610 = U;
        float r22611 = r22609 * r22610;
        float r22612 = -1.3965471798946012e-190;
        bool r22613 = r22611 <= r22612;
        float r22614 = r22608 * r22607;
        float r22615 = r22614 * r22610;
        float r22616 = t;
        float r22617 = l;
        float r22618 = r22617 * r22617;
        float r22619 = Om;
        float r22620 = r22618 / r22619;
        float r22621 = r22608 * r22620;
        float r22622 = r22616 - r22621;
        float r22623 = r22617 / r22619;
        float r22624 = pow(r22623, r22608);
        float r22625 = r22607 * r22624;
        float r22626 = U_;
        float r22627 = r22610 - r22626;
        float r22628 = r22625 * r22627;
        float r22629 = r22622 - r22628;
        float r22630 = cbrt(r22629);
        float r22631 = r22630 * r22630;
        float r22632 = r22615 * r22631;
        float r22633 = r22632 * r22630;
        float r22634 = sqrt(r22633);
        float r22635 = 0.0;
        bool r22636 = r22611 <= r22635;
        float r22637 = r22607 / r22619;
        float r22638 = r22637 * r22637;
        float r22639 = r22626 * r22610;
        float r22640 = r22639 * r22618;
        float r22641 = r22617 * r22610;
        float r22642 = r22641 * r22641;
        float r22643 = r22640 - r22642;
        float r22644 = r22638 * r22643;
        float r22645 = r22616 * r22607;
        float r22646 = r22610 * r22645;
        float r22647 = r22644 + r22646;
        float r22648 = r22608 * r22647;
        float r22649 = sqrt(r22648);
        float r22650 = sqrt(r22615);
        float r22651 = r22619 / r22617;
        float r22652 = r22617 / r22651;
        float r22653 = r22608 * r22652;
        float r22654 = r22616 - r22653;
        float r22655 = r22654 - r22628;
        float r22656 = sqrt(r22655);
        float r22657 = r22650 * r22656;
        float r22658 = r22636 ? r22649 : r22657;
        float r22659 = r22613 ? r22634 : r22658;
        return r22659;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r22660 = n;
        double r22661 = 2;
        double r22662 = r22660 * r22661;
        double r22663 = U;
        double r22664 = r22662 * r22663;
        double r22665 = -1.3965471798946012e-190;
        bool r22666 = r22664 <= r22665;
        double r22667 = r22661 * r22660;
        double r22668 = r22667 * r22663;
        double r22669 = t;
        double r22670 = l;
        double r22671 = r22670 * r22670;
        double r22672 = Om;
        double r22673 = r22671 / r22672;
        double r22674 = r22661 * r22673;
        double r22675 = r22669 - r22674;
        double r22676 = r22670 / r22672;
        double r22677 = pow(r22676, r22661);
        double r22678 = r22660 * r22677;
        double r22679 = U_;
        double r22680 = r22663 - r22679;
        double r22681 = r22678 * r22680;
        double r22682 = r22675 - r22681;
        double r22683 = cbrt(r22682);
        double r22684 = r22683 * r22683;
        double r22685 = r22668 * r22684;
        double r22686 = r22685 * r22683;
        double r22687 = sqrt(r22686);
        double r22688 = 0.0;
        bool r22689 = r22664 <= r22688;
        double r22690 = r22660 / r22672;
        double r22691 = r22690 * r22690;
        double r22692 = r22679 * r22663;
        double r22693 = r22692 * r22671;
        double r22694 = r22670 * r22663;
        double r22695 = r22694 * r22694;
        double r22696 = r22693 - r22695;
        double r22697 = r22691 * r22696;
        double r22698 = r22669 * r22660;
        double r22699 = r22663 * r22698;
        double r22700 = r22697 + r22699;
        double r22701 = r22661 * r22700;
        double r22702 = sqrt(r22701);
        double r22703 = sqrt(r22668);
        double r22704 = r22672 / r22670;
        double r22705 = r22670 / r22704;
        double r22706 = r22661 * r22705;
        double r22707 = r22669 - r22706;
        double r22708 = r22707 - r22681;
        double r22709 = sqrt(r22708);
        double r22710 = r22703 * r22709;
        double r22711 = r22689 ? r22702 : r22710;
        double r22712 = r22666 ? r22687 : r22711;
        return r22712;
}

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 r22713, r22714, r22715, r22716, r22717, r22718, r22719, r22720, r22721, r22722, r22723, r22724, r22725, r22726, r22727, r22728, r22729, r22730, r22731, r22732, r22733;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r22713, "2", 10, MPFR_RNDN);
        mpfr_init(r22714);
        mpfr_init(r22715);
        mpfr_init(r22716);
        mpfr_init(r22717);
        mpfr_init(r22718);
        mpfr_init(r22719);
        mpfr_init(r22720);
        mpfr_init(r22721);
        mpfr_init(r22722);
        mpfr_init(r22723);
        mpfr_init(r22724);
        mpfr_init(r22725);
        mpfr_init(r22726);
        mpfr_init(r22727);
        mpfr_init(r22728);
        mpfr_init(r22729);
        mpfr_init(r22730);
        mpfr_init(r22731);
        mpfr_init(r22732);
        mpfr_init(r22733);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r22714, n, MPFR_RNDN);
        mpfr_mul(r22715, r22713, r22714, MPFR_RNDN);
        mpfr_set_d(r22716, U, MPFR_RNDN);
        mpfr_mul(r22717, r22715, r22716, MPFR_RNDN);
        mpfr_set_d(r22718, t, MPFR_RNDN);
        mpfr_set_d(r22719, l, MPFR_RNDN);
        mpfr_mul(r22720, r22719, r22719, MPFR_RNDN);
        mpfr_set_d(r22721, Om, MPFR_RNDN);
        mpfr_div(r22722, r22720, r22721, MPFR_RNDN);
        mpfr_mul(r22723, r22713, r22722, MPFR_RNDN);
        mpfr_sub(r22724, r22718, r22723, MPFR_RNDN);
        mpfr_div(r22725, r22719, r22721, MPFR_RNDN);
        mpfr_pow(r22726, r22725, r22713, MPFR_RNDN);
        mpfr_mul(r22727, r22714, r22726, MPFR_RNDN);
        mpfr_set_d(r22728, U_, MPFR_RNDN);
        mpfr_sub(r22729, r22716, r22728, MPFR_RNDN);
        mpfr_mul(r22730, r22727, r22729, MPFR_RNDN);
        mpfr_sub(r22731, r22724, r22730, MPFR_RNDN);
        mpfr_mul(r22732, r22717, r22731, MPFR_RNDN);
        mpfr_sqrt(r22733, r22732, MPFR_RNDN);
        return mpfr_get_d(r22733, MPFR_RNDN);
}

static mpfr_t r22734, r22735, r22736, r22737, r22738, r22739, r22740, r22741, r22742, r22743, r22744, r22745, r22746, r22747, r22748, r22749, r22750, r22751, r22752, r22753, r22754, r22755, r22756, r22757, r22758, r22759, r22760, r22761, r22762, r22763, r22764, r22765, r22766, r22767, r22768, r22769, r22770, r22771, r22772, r22773, r22774, r22775, r22776, r22777, r22778, r22779, r22780, r22781, r22782, r22783, r22784, r22785, r22786;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22734);
        mpfr_init_set_str(r22735, "2", 10, MPFR_RNDN);
        mpfr_init(r22736);
        mpfr_init(r22737);
        mpfr_init(r22738);
        mpfr_init_set_str(r22739, "-1.3965471798946012e-190", 10, MPFR_RNDN);
        mpfr_init(r22740);
        mpfr_init(r22741);
        mpfr_init(r22742);
        mpfr_init(r22743);
        mpfr_init(r22744);
        mpfr_init(r22745);
        mpfr_init(r22746);
        mpfr_init(r22747);
        mpfr_init(r22748);
        mpfr_init(r22749);
        mpfr_init(r22750);
        mpfr_init(r22751);
        mpfr_init(r22752);
        mpfr_init(r22753);
        mpfr_init(r22754);
        mpfr_init(r22755);
        mpfr_init(r22756);
        mpfr_init(r22757);
        mpfr_init(r22758);
        mpfr_init(r22759);
        mpfr_init(r22760);
        mpfr_init(r22761);
        mpfr_init_set_str(r22762, "0.0", 10, MPFR_RNDN);
        mpfr_init(r22763);
        mpfr_init(r22764);
        mpfr_init(r22765);
        mpfr_init(r22766);
        mpfr_init(r22767);
        mpfr_init(r22768);
        mpfr_init(r22769);
        mpfr_init(r22770);
        mpfr_init(r22771);
        mpfr_init(r22772);
        mpfr_init(r22773);
        mpfr_init(r22774);
        mpfr_init(r22775);
        mpfr_init(r22776);
        mpfr_init(r22777);
        mpfr_init(r22778);
        mpfr_init(r22779);
        mpfr_init(r22780);
        mpfr_init(r22781);
        mpfr_init(r22782);
        mpfr_init(r22783);
        mpfr_init(r22784);
        mpfr_init(r22785);
        mpfr_init(r22786);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        mpfr_set_d(r22734, n, MPFR_RNDN);
        ;
        mpfr_mul(r22736, r22734, r22735, MPFR_RNDN);
        mpfr_set_d(r22737, U, MPFR_RNDN);
        mpfr_mul(r22738, r22736, r22737, MPFR_RNDN);
        ;
        mpfr_set_si(r22740, mpfr_cmp(r22738, r22739) <= 0, MPFR_RNDN);
        mpfr_mul(r22741, r22735, r22734, MPFR_RNDN);
        mpfr_mul(r22742, r22741, r22737, MPFR_RNDN);
        mpfr_set_d(r22743, t, MPFR_RNDN);
        mpfr_set_d(r22744, l, MPFR_RNDN);
        mpfr_mul(r22745, r22744, r22744, MPFR_RNDN);
        mpfr_set_d(r22746, Om, MPFR_RNDN);
        mpfr_div(r22747, r22745, r22746, MPFR_RNDN);
        mpfr_mul(r22748, r22735, r22747, MPFR_RNDN);
        mpfr_sub(r22749, r22743, r22748, MPFR_RNDN);
        mpfr_div(r22750, r22744, r22746, MPFR_RNDN);
        mpfr_pow(r22751, r22750, r22735, MPFR_RNDN);
        mpfr_mul(r22752, r22734, r22751, MPFR_RNDN);
        mpfr_set_d(r22753, U_, MPFR_RNDN);
        mpfr_sub(r22754, r22737, r22753, MPFR_RNDN);
        mpfr_mul(r22755, r22752, r22754, MPFR_RNDN);
        mpfr_sub(r22756, r22749, r22755, MPFR_RNDN);
        mpfr_cbrt(r22757, r22756, MPFR_RNDN);
        mpfr_mul(r22758, r22757, r22757, MPFR_RNDN);
        mpfr_mul(r22759, r22742, r22758, MPFR_RNDN);
        mpfr_mul(r22760, r22759, r22757, MPFR_RNDN);
        mpfr_sqrt(r22761, r22760, MPFR_RNDN);
        ;
        mpfr_set_si(r22763, mpfr_cmp(r22738, r22762) <= 0, MPFR_RNDN);
        mpfr_div(r22764, r22734, r22746, MPFR_RNDN);
        mpfr_mul(r22765, r22764, r22764, MPFR_RNDN);
        mpfr_mul(r22766, r22753, r22737, MPFR_RNDN);
        mpfr_mul(r22767, r22766, r22745, MPFR_RNDN);
        mpfr_mul(r22768, r22744, r22737, MPFR_RNDN);
        mpfr_mul(r22769, r22768, r22768, MPFR_RNDN);
        mpfr_sub(r22770, r22767, r22769, MPFR_RNDN);
        mpfr_mul(r22771, r22765, r22770, MPFR_RNDN);
        mpfr_mul(r22772, r22743, r22734, MPFR_RNDN);
        mpfr_mul(r22773, r22737, r22772, MPFR_RNDN);
        mpfr_add(r22774, r22771, r22773, MPFR_RNDN);
        mpfr_mul(r22775, r22735, r22774, MPFR_RNDN);
        mpfr_sqrt(r22776, r22775, MPFR_RNDN);
        mpfr_sqrt(r22777, r22742, MPFR_RNDN);
        mpfr_div(r22778, r22746, r22744, MPFR_RNDN);
        mpfr_div(r22779, r22744, r22778, MPFR_RNDN);
        mpfr_mul(r22780, r22735, r22779, MPFR_RNDN);
        mpfr_sub(r22781, r22743, r22780, MPFR_RNDN);
        mpfr_sub(r22782, r22781, r22755, MPFR_RNDN);
        mpfr_sqrt(r22783, r22782, MPFR_RNDN);
        mpfr_mul(r22784, r22777, r22783, MPFR_RNDN);
        if (mpfr_get_si(r22763, MPFR_RNDN)) { mpfr_set(r22785, r22776, MPFR_RNDN); } else { mpfr_set(r22785, r22784, MPFR_RNDN); };
        if (mpfr_get_si(r22740, MPFR_RNDN)) { mpfr_set(r22786, r22761, MPFR_RNDN); } else { mpfr_set(r22786, r22785, MPFR_RNDN); };
        return mpfr_get_d(r22786, MPFR_RNDN);
}

static mpfr_t r22787, r22788, r22789, r22790, r22791, r22792, r22793, r22794, r22795, r22796, r22797, r22798, r22799, r22800, r22801, r22802, r22803, r22804, r22805, r22806, r22807, r22808, r22809, r22810, r22811, r22812, r22813, r22814, r22815, r22816, r22817, r22818, r22819, r22820, r22821, r22822, r22823, r22824, r22825, r22826, r22827, r22828, r22829, r22830, r22831, r22832, r22833, r22834, r22835, r22836, r22837, r22838, r22839;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22787);
        mpfr_init_set_str(r22788, "2", 10, MPFR_RNDN);
        mpfr_init(r22789);
        mpfr_init(r22790);
        mpfr_init(r22791);
        mpfr_init_set_str(r22792, "-1.3965471798946012e-190", 10, MPFR_RNDN);
        mpfr_init(r22793);
        mpfr_init(r22794);
        mpfr_init(r22795);
        mpfr_init(r22796);
        mpfr_init(r22797);
        mpfr_init(r22798);
        mpfr_init(r22799);
        mpfr_init(r22800);
        mpfr_init(r22801);
        mpfr_init(r22802);
        mpfr_init(r22803);
        mpfr_init(r22804);
        mpfr_init(r22805);
        mpfr_init(r22806);
        mpfr_init(r22807);
        mpfr_init(r22808);
        mpfr_init(r22809);
        mpfr_init(r22810);
        mpfr_init(r22811);
        mpfr_init(r22812);
        mpfr_init(r22813);
        mpfr_init(r22814);
        mpfr_init_set_str(r22815, "0.0", 10, MPFR_RNDN);
        mpfr_init(r22816);
        mpfr_init(r22817);
        mpfr_init(r22818);
        mpfr_init(r22819);
        mpfr_init(r22820);
        mpfr_init(r22821);
        mpfr_init(r22822);
        mpfr_init(r22823);
        mpfr_init(r22824);
        mpfr_init(r22825);
        mpfr_init(r22826);
        mpfr_init(r22827);
        mpfr_init(r22828);
        mpfr_init(r22829);
        mpfr_init(r22830);
        mpfr_init(r22831);
        mpfr_init(r22832);
        mpfr_init(r22833);
        mpfr_init(r22834);
        mpfr_init(r22835);
        mpfr_init(r22836);
        mpfr_init(r22837);
        mpfr_init(r22838);
        mpfr_init(r22839);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        mpfr_set_d(r22787, n, MPFR_RNDN);
        ;
        mpfr_mul(r22789, r22787, r22788, MPFR_RNDN);
        mpfr_set_d(r22790, U, MPFR_RNDN);
        mpfr_mul(r22791, r22789, r22790, MPFR_RNDN);
        ;
        mpfr_set_si(r22793, mpfr_cmp(r22791, r22792) <= 0, MPFR_RNDN);
        mpfr_mul(r22794, r22788, r22787, MPFR_RNDN);
        mpfr_mul(r22795, r22794, r22790, MPFR_RNDN);
        mpfr_set_d(r22796, t, MPFR_RNDN);
        mpfr_set_d(r22797, l, MPFR_RNDN);
        mpfr_mul(r22798, r22797, r22797, MPFR_RNDN);
        mpfr_set_d(r22799, Om, MPFR_RNDN);
        mpfr_div(r22800, r22798, r22799, MPFR_RNDN);
        mpfr_mul(r22801, r22788, r22800, MPFR_RNDN);
        mpfr_sub(r22802, r22796, r22801, MPFR_RNDN);
        mpfr_div(r22803, r22797, r22799, MPFR_RNDN);
        mpfr_pow(r22804, r22803, r22788, MPFR_RNDN);
        mpfr_mul(r22805, r22787, r22804, MPFR_RNDN);
        mpfr_set_d(r22806, U_, MPFR_RNDN);
        mpfr_sub(r22807, r22790, r22806, MPFR_RNDN);
        mpfr_mul(r22808, r22805, r22807, MPFR_RNDN);
        mpfr_sub(r22809, r22802, r22808, MPFR_RNDN);
        mpfr_cbrt(r22810, r22809, MPFR_RNDN);
        mpfr_mul(r22811, r22810, r22810, MPFR_RNDN);
        mpfr_mul(r22812, r22795, r22811, MPFR_RNDN);
        mpfr_mul(r22813, r22812, r22810, MPFR_RNDN);
        mpfr_sqrt(r22814, r22813, MPFR_RNDN);
        ;
        mpfr_set_si(r22816, mpfr_cmp(r22791, r22815) <= 0, MPFR_RNDN);
        mpfr_div(r22817, r22787, r22799, MPFR_RNDN);
        mpfr_mul(r22818, r22817, r22817, MPFR_RNDN);
        mpfr_mul(r22819, r22806, r22790, MPFR_RNDN);
        mpfr_mul(r22820, r22819, r22798, MPFR_RNDN);
        mpfr_mul(r22821, r22797, r22790, MPFR_RNDN);
        mpfr_mul(r22822, r22821, r22821, MPFR_RNDN);
        mpfr_sub(r22823, r22820, r22822, MPFR_RNDN);
        mpfr_mul(r22824, r22818, r22823, MPFR_RNDN);
        mpfr_mul(r22825, r22796, r22787, MPFR_RNDN);
        mpfr_mul(r22826, r22790, r22825, MPFR_RNDN);
        mpfr_add(r22827, r22824, r22826, MPFR_RNDN);
        mpfr_mul(r22828, r22788, r22827, MPFR_RNDN);
        mpfr_sqrt(r22829, r22828, MPFR_RNDN);
        mpfr_sqrt(r22830, r22795, MPFR_RNDN);
        mpfr_div(r22831, r22799, r22797, MPFR_RNDN);
        mpfr_div(r22832, r22797, r22831, MPFR_RNDN);
        mpfr_mul(r22833, r22788, r22832, MPFR_RNDN);
        mpfr_sub(r22834, r22796, r22833, MPFR_RNDN);
        mpfr_sub(r22835, r22834, r22808, MPFR_RNDN);
        mpfr_sqrt(r22836, r22835, MPFR_RNDN);
        mpfr_mul(r22837, r22830, r22836, MPFR_RNDN);
        if (mpfr_get_si(r22816, MPFR_RNDN)) { mpfr_set(r22838, r22829, MPFR_RNDN); } else { mpfr_set(r22838, r22837, MPFR_RNDN); };
        if (mpfr_get_si(r22793, MPFR_RNDN)) { mpfr_set(r22839, r22814, MPFR_RNDN); } else { mpfr_set(r22839, r22838, MPFR_RNDN); };
        return mpfr_get_d(r22839, MPFR_RNDN);
}

