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

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

double f_if(float l, float Om, float kx, float ky) {
        float r8567 = 1;
        float r8568 = 2;
        float r8569 = r8567 / r8568;
        float r8570 = l;
        float r8571 = r8568 * r8570;
        float r8572 = Om;
        float r8573 = r8571 / r8572;
        float r8574 = pow(r8573, r8568);
        float r8575 = kx;
        float r8576 = sin(r8575);
        float r8577 = pow(r8576, r8568);
        float r8578 = ky;
        float r8579 = sin(r8578);
        float r8580 = pow(r8579, r8568);
        float r8581 = r8577 + r8580;
        float r8582 = r8574 * r8581;
        float r8583 = r8567 + r8582;
        float r8584 = sqrt(r8583);
        float r8585 = r8567 / r8584;
        float r8586 = r8567 + r8585;
        float r8587 = r8569 * r8586;
        float r8588 = sqrt(r8587);
        return r8588;
}

double f_id(double l, double Om, double kx, double ky) {
        double r8589 = 1;
        double r8590 = 2;
        double r8591 = r8589 / r8590;
        double r8592 = l;
        double r8593 = r8590 * r8592;
        double r8594 = Om;
        double r8595 = r8593 / r8594;
        double r8596 = pow(r8595, r8590);
        double r8597 = kx;
        double r8598 = sin(r8597);
        double r8599 = pow(r8598, r8590);
        double r8600 = ky;
        double r8601 = sin(r8600);
        double r8602 = pow(r8601, r8590);
        double r8603 = r8599 + r8602;
        double r8604 = r8596 * r8603;
        double r8605 = r8589 + r8604;
        double r8606 = sqrt(r8605);
        double r8607 = r8589 / r8606;
        double r8608 = r8589 + r8607;
        double r8609 = r8591 * r8608;
        double r8610 = sqrt(r8609);
        return r8610;
}


double f_of(float l, float Om, float kx, float ky) {
        float r8611 = 1;
        float r8612 = 2;
        float r8613 = r8611 / r8612;
        float r8614 = l;
        float r8615 = r8612 * r8614;
        float r8616 = Om;
        float r8617 = r8615 / r8616;
        float r8618 = cbrt(r8617);
        float r8619 = r8618 * r8618;
        float r8620 = pow(r8619, r8612);
        float r8621 = pow(r8618, r8612);
        float r8622 = kx;
        float r8623 = sin(r8622);
        float r8624 = pow(r8623, r8612);
        float r8625 = ky;
        float r8626 = sin(r8625);
        float r8627 = pow(r8626, r8612);
        float r8628 = r8624 + r8627;
        float r8629 = r8621 * r8628;
        float r8630 = r8620 * r8629;
        float r8631 = r8611 + r8630;
        float r8632 = sqrt(r8631);
        float r8633 = r8611 / r8632;
        float r8634 = r8611 + r8633;
        float r8635 = r8613 * r8634;
        float r8636 = sqrt(r8635);
        return r8636;
}

double f_od(double l, double Om, double kx, double ky) {
        double r8637 = 1;
        double r8638 = 2;
        double r8639 = r8637 / r8638;
        double r8640 = l;
        double r8641 = r8638 * r8640;
        double r8642 = Om;
        double r8643 = r8641 / r8642;
        double r8644 = cbrt(r8643);
        double r8645 = r8644 * r8644;
        double r8646 = pow(r8645, r8638);
        double r8647 = pow(r8644, r8638);
        double r8648 = kx;
        double r8649 = sin(r8648);
        double r8650 = pow(r8649, r8638);
        double r8651 = ky;
        double r8652 = sin(r8651);
        double r8653 = pow(r8652, r8638);
        double r8654 = r8650 + r8653;
        double r8655 = r8647 * r8654;
        double r8656 = r8646 * r8655;
        double r8657 = r8637 + r8656;
        double r8658 = sqrt(r8657);
        double r8659 = r8637 / r8658;
        double r8660 = r8637 + r8659;
        double r8661 = r8639 * r8660;
        double r8662 = sqrt(r8661);
        return r8662;
}

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 r8663, r8664, r8665, r8666, r8667, r8668, r8669, r8670, r8671, r8672, r8673, r8674, r8675, r8676, r8677, r8678, r8679, r8680, r8681, r8682, r8683, r8684;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8663, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8664, "2", 10, MPFR_RNDN);
        mpfr_init(r8665);
        mpfr_init(r8666);
        mpfr_init(r8667);
        mpfr_init(r8668);
        mpfr_init(r8669);
        mpfr_init(r8670);
        mpfr_init(r8671);
        mpfr_init(r8672);
        mpfr_init(r8673);
        mpfr_init(r8674);
        mpfr_init(r8675);
        mpfr_init(r8676);
        mpfr_init(r8677);
        mpfr_init(r8678);
        mpfr_init(r8679);
        mpfr_init(r8680);
        mpfr_init(r8681);
        mpfr_init(r8682);
        mpfr_init(r8683);
        mpfr_init(r8684);
}

double f_im(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r8665, r8663, r8664, MPFR_RNDN);
        mpfr_set_d(r8666, l, MPFR_RNDN);
        mpfr_mul(r8667, r8664, r8666, MPFR_RNDN);
        mpfr_set_d(r8668, Om, MPFR_RNDN);
        mpfr_div(r8669, r8667, r8668, MPFR_RNDN);
        mpfr_pow(r8670, r8669, r8664, MPFR_RNDN);
        mpfr_set_d(r8671, kx, MPFR_RNDN);
        mpfr_sin(r8672, r8671, MPFR_RNDN);
        mpfr_pow(r8673, r8672, r8664, MPFR_RNDN);
        mpfr_set_d(r8674, ky, MPFR_RNDN);
        mpfr_sin(r8675, r8674, MPFR_RNDN);
        mpfr_pow(r8676, r8675, r8664, MPFR_RNDN);
        mpfr_add(r8677, r8673, r8676, MPFR_RNDN);
        mpfr_mul(r8678, r8670, r8677, MPFR_RNDN);
        mpfr_add(r8679, r8663, r8678, MPFR_RNDN);
        mpfr_sqrt(r8680, r8679, MPFR_RNDN);
        mpfr_div(r8681, r8663, r8680, MPFR_RNDN);
        mpfr_add(r8682, r8663, r8681, MPFR_RNDN);
        mpfr_mul(r8683, r8665, r8682, MPFR_RNDN);
        mpfr_sqrt(r8684, r8683, MPFR_RNDN);
        return mpfr_get_d(r8684, MPFR_RNDN);
}

static mpfr_t r8685, r8686, r8687, r8688, r8689, r8690, r8691, r8692, r8693, r8694, r8695, r8696, r8697, r8698, r8699, r8700, r8701, r8702, r8703, r8704, r8705, r8706, r8707, r8708, r8709, r8710;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8685, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8686, "2", 10, MPFR_RNDN);
        mpfr_init(r8687);
        mpfr_init(r8688);
        mpfr_init(r8689);
        mpfr_init(r8690);
        mpfr_init(r8691);
        mpfr_init(r8692);
        mpfr_init(r8693);
        mpfr_init(r8694);
        mpfr_init(r8695);
        mpfr_init(r8696);
        mpfr_init(r8697);
        mpfr_init(r8698);
        mpfr_init(r8699);
        mpfr_init(r8700);
        mpfr_init(r8701);
        mpfr_init(r8702);
        mpfr_init(r8703);
        mpfr_init(r8704);
        mpfr_init(r8705);
        mpfr_init(r8706);
        mpfr_init(r8707);
        mpfr_init(r8708);
        mpfr_init(r8709);
        mpfr_init(r8710);
}

double f_fm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r8687, r8685, r8686, MPFR_RNDN);
        mpfr_set_d(r8688, l, MPFR_RNDN);
        mpfr_mul(r8689, r8686, r8688, MPFR_RNDN);
        mpfr_set_d(r8690, Om, MPFR_RNDN);
        mpfr_div(r8691, r8689, r8690, MPFR_RNDN);
        mpfr_cbrt(r8692, r8691, MPFR_RNDN);
        mpfr_mul(r8693, r8692, r8692, MPFR_RNDN);
        mpfr_pow(r8694, r8693, r8686, MPFR_RNDN);
        mpfr_pow(r8695, r8692, r8686, MPFR_RNDN);
        mpfr_set_d(r8696, kx, MPFR_RNDN);
        mpfr_sin(r8697, r8696, MPFR_RNDN);
        mpfr_pow(r8698, r8697, r8686, MPFR_RNDN);
        mpfr_set_d(r8699, ky, MPFR_RNDN);
        mpfr_sin(r8700, r8699, MPFR_RNDN);
        mpfr_pow(r8701, r8700, r8686, MPFR_RNDN);
        mpfr_add(r8702, r8698, r8701, MPFR_RNDN);
        mpfr_mul(r8703, r8695, r8702, MPFR_RNDN);
        mpfr_mul(r8704, r8694, r8703, MPFR_RNDN);
        mpfr_add(r8705, r8685, r8704, MPFR_RNDN);
        mpfr_sqrt(r8706, r8705, MPFR_RNDN);
        mpfr_div(r8707, r8685, r8706, MPFR_RNDN);
        mpfr_add(r8708, r8685, r8707, MPFR_RNDN);
        mpfr_mul(r8709, r8687, r8708, MPFR_RNDN);
        mpfr_sqrt(r8710, r8709, MPFR_RNDN);
        return mpfr_get_d(r8710, MPFR_RNDN);
}

static mpfr_t r8711, r8712, r8713, r8714, r8715, r8716, r8717, r8718, r8719, r8720, r8721, r8722, r8723, r8724, r8725, r8726, r8727, r8728, r8729, r8730, r8731, r8732, r8733, r8734, r8735, r8736;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8711, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8712, "2", 10, MPFR_RNDN);
        mpfr_init(r8713);
        mpfr_init(r8714);
        mpfr_init(r8715);
        mpfr_init(r8716);
        mpfr_init(r8717);
        mpfr_init(r8718);
        mpfr_init(r8719);
        mpfr_init(r8720);
        mpfr_init(r8721);
        mpfr_init(r8722);
        mpfr_init(r8723);
        mpfr_init(r8724);
        mpfr_init(r8725);
        mpfr_init(r8726);
        mpfr_init(r8727);
        mpfr_init(r8728);
        mpfr_init(r8729);
        mpfr_init(r8730);
        mpfr_init(r8731);
        mpfr_init(r8732);
        mpfr_init(r8733);
        mpfr_init(r8734);
        mpfr_init(r8735);
        mpfr_init(r8736);
}

double f_dm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r8713, r8711, r8712, MPFR_RNDN);
        mpfr_set_d(r8714, l, MPFR_RNDN);
        mpfr_mul(r8715, r8712, r8714, MPFR_RNDN);
        mpfr_set_d(r8716, Om, MPFR_RNDN);
        mpfr_div(r8717, r8715, r8716, MPFR_RNDN);
        mpfr_cbrt(r8718, r8717, MPFR_RNDN);
        mpfr_mul(r8719, r8718, r8718, MPFR_RNDN);
        mpfr_pow(r8720, r8719, r8712, MPFR_RNDN);
        mpfr_pow(r8721, r8718, r8712, MPFR_RNDN);
        mpfr_set_d(r8722, kx, MPFR_RNDN);
        mpfr_sin(r8723, r8722, MPFR_RNDN);
        mpfr_pow(r8724, r8723, r8712, MPFR_RNDN);
        mpfr_set_d(r8725, ky, MPFR_RNDN);
        mpfr_sin(r8726, r8725, MPFR_RNDN);
        mpfr_pow(r8727, r8726, r8712, MPFR_RNDN);
        mpfr_add(r8728, r8724, r8727, MPFR_RNDN);
        mpfr_mul(r8729, r8721, r8728, MPFR_RNDN);
        mpfr_mul(r8730, r8720, r8729, MPFR_RNDN);
        mpfr_add(r8731, r8711, r8730, MPFR_RNDN);
        mpfr_sqrt(r8732, r8731, MPFR_RNDN);
        mpfr_div(r8733, r8711, r8732, MPFR_RNDN);
        mpfr_add(r8734, r8711, r8733, MPFR_RNDN);
        mpfr_mul(r8735, r8713, r8734, MPFR_RNDN);
        mpfr_sqrt(r8736, r8735, MPFR_RNDN);
        return mpfr_get_d(r8736, MPFR_RNDN);
}

