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

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

double f_if(float t, float l, float k) {
        float r8944 = 2;
        float r8945 = t;
        float r8946 = 3;
        float r8947 = pow(r8945, r8946);
        float r8948 = l;
        float r8949 = r8948 * r8948;
        float r8950 = r8947 / r8949;
        float r8951 = k;
        float r8952 = sin(r8951);
        float r8953 = r8950 * r8952;
        float r8954 = tan(r8951);
        float r8955 = r8953 * r8954;
        float r8956 = 1;
        float r8957 = r8951 / r8945;
        float r8958 = pow(r8957, r8944);
        float r8959 = r8956 + r8958;
        float r8960 = r8959 - r8956;
        float r8961 = r8955 * r8960;
        float r8962 = r8944 / r8961;
        return r8962;
}

double f_id(double t, double l, double k) {
        double r8963 = 2;
        double r8964 = t;
        double r8965 = 3;
        double r8966 = pow(r8964, r8965);
        double r8967 = l;
        double r8968 = r8967 * r8967;
        double r8969 = r8966 / r8968;
        double r8970 = k;
        double r8971 = sin(r8970);
        double r8972 = r8969 * r8971;
        double r8973 = tan(r8970);
        double r8974 = r8972 * r8973;
        double r8975 = 1;
        double r8976 = r8970 / r8964;
        double r8977 = pow(r8976, r8963);
        double r8978 = r8975 + r8977;
        double r8979 = r8978 - r8975;
        double r8980 = r8974 * r8979;
        double r8981 = r8963 / r8980;
        return r8981;
}


double f_of(float t, float l, float k) {
        float r8982 = 2;
        float r8983 = k;
        float r8984 = sin(r8983);
        float r8985 = -r8984;
        float r8986 = r8982 / r8985;
        float r8987 = cos(r8983);
        float r8988 = -1;
        float r8989 = t;
        float r8990 = r8988 / r8989;
        float r8991 = r8987 * r8990;
        float r8992 = -r8983;
        float r8993 = l;
        float r8994 = -r8993;
        float r8995 = r8992 / r8994;
        float r8996 = r8991 / r8995;
        float r8997 = r8983 / r8994;
        float r8998 = r8997 * r8985;
        float r8999 = r8996 / r8998;
        float r9000 = r8986 * r8999;
        return r9000;
}

double f_od(double t, double l, double k) {
        double r9001 = 2;
        double r9002 = k;
        double r9003 = sin(r9002);
        double r9004 = -r9003;
        double r9005 = r9001 / r9004;
        double r9006 = cos(r9002);
        double r9007 = -1;
        double r9008 = t;
        double r9009 = r9007 / r9008;
        double r9010 = r9006 * r9009;
        double r9011 = -r9002;
        double r9012 = l;
        double r9013 = -r9012;
        double r9014 = r9011 / r9013;
        double r9015 = r9010 / r9014;
        double r9016 = r9002 / r9013;
        double r9017 = r9016 * r9004;
        double r9018 = r9015 / r9017;
        double r9019 = r9005 * r9018;
        return r9019;
}

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 r9020, r9021, r9022, r9023, r9024, r9025, r9026, r9027, r9028, r9029, r9030, r9031, r9032, r9033, r9034, r9035, r9036, r9037, r9038;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(4432);
        mpfr_init_set_str(r9020, "2", 10, MPFR_RNDN);
        mpfr_init(r9021);
        mpfr_init_set_str(r9022, "3", 10, MPFR_RNDN);
        mpfr_init(r9023);
        mpfr_init(r9024);
        mpfr_init(r9025);
        mpfr_init(r9026);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init(r9029);
        mpfr_init(r9030);
        mpfr_init(r9031);
        mpfr_init_set_str(r9032, "1", 10, MPFR_RNDN);
        mpfr_init(r9033);
        mpfr_init(r9034);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r9021, t, MPFR_RNDN);
        ;
        mpfr_pow(r9023, r9021, r9022, MPFR_RNDN);
        mpfr_set_d(r9024, l, MPFR_RNDN);
        mpfr_mul(r9025, r9024, r9024, MPFR_RNDN);
        mpfr_div(r9026, r9023, r9025, MPFR_RNDN);
        mpfr_set_d(r9027, k, MPFR_RNDN);
        mpfr_sin(r9028, r9027, MPFR_RNDN);
        mpfr_mul(r9029, r9026, r9028, MPFR_RNDN);
        mpfr_tan(r9030, r9027, MPFR_RNDN);
        mpfr_mul(r9031, r9029, r9030, MPFR_RNDN);
        ;
        mpfr_div(r9033, r9027, r9021, MPFR_RNDN);
        mpfr_pow(r9034, r9033, r9020, MPFR_RNDN);
        mpfr_add(r9035, r9032, r9034, MPFR_RNDN);
        mpfr_sub(r9036, r9035, r9032, MPFR_RNDN);
        mpfr_mul(r9037, r9031, r9036, MPFR_RNDN);
        mpfr_div(r9038, r9020, r9037, MPFR_RNDN);
        return mpfr_get_d(r9038, MPFR_RNDN);
}

static mpfr_t r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(4432);
        mpfr_init_set_str(r9039, "2", 10, MPFR_RNDN);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init_set_str(r9045, "-1", 10, MPFR_RNDN);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init(r9050);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
}

double f_fm(double t, double l, double k) {
        ;
        mpfr_set_d(r9040, k, MPFR_RNDN);
        mpfr_sin(r9041, r9040, MPFR_RNDN);
        mpfr_neg(r9042, r9041, MPFR_RNDN);
        mpfr_div(r9043, r9039, r9042, MPFR_RNDN);
        mpfr_cos(r9044, r9040, MPFR_RNDN);
        ;
        mpfr_set_d(r9046, t, MPFR_RNDN);
        mpfr_div(r9047, r9045, r9046, MPFR_RNDN);
        mpfr_mul(r9048, r9044, r9047, MPFR_RNDN);
        mpfr_neg(r9049, r9040, MPFR_RNDN);
        mpfr_set_d(r9050, l, MPFR_RNDN);
        mpfr_neg(r9051, r9050, MPFR_RNDN);
        mpfr_div(r9052, r9049, r9051, MPFR_RNDN);
        mpfr_div(r9053, r9048, r9052, MPFR_RNDN);
        mpfr_div(r9054, r9040, r9051, MPFR_RNDN);
        mpfr_mul(r9055, r9054, r9042, MPFR_RNDN);
        mpfr_div(r9056, r9053, r9055, MPFR_RNDN);
        mpfr_mul(r9057, r9043, r9056, MPFR_RNDN);
        return mpfr_get_d(r9057, MPFR_RNDN);
}

static mpfr_t r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(4432);
        mpfr_init_set_str(r9058, "2", 10, MPFR_RNDN);
        mpfr_init(r9059);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init(r9062);
        mpfr_init(r9063);
        mpfr_init_set_str(r9064, "-1", 10, MPFR_RNDN);
        mpfr_init(r9065);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
}

double f_dm(double t, double l, double k) {
        ;
        mpfr_set_d(r9059, k, MPFR_RNDN);
        mpfr_sin(r9060, r9059, MPFR_RNDN);
        mpfr_neg(r9061, r9060, MPFR_RNDN);
        mpfr_div(r9062, r9058, r9061, MPFR_RNDN);
        mpfr_cos(r9063, r9059, MPFR_RNDN);
        ;
        mpfr_set_d(r9065, t, MPFR_RNDN);
        mpfr_div(r9066, r9064, r9065, MPFR_RNDN);
        mpfr_mul(r9067, r9063, r9066, MPFR_RNDN);
        mpfr_neg(r9068, r9059, MPFR_RNDN);
        mpfr_set_d(r9069, l, MPFR_RNDN);
        mpfr_neg(r9070, r9069, MPFR_RNDN);
        mpfr_div(r9071, r9068, r9070, MPFR_RNDN);
        mpfr_div(r9072, r9067, r9071, MPFR_RNDN);
        mpfr_div(r9073, r9059, r9070, MPFR_RNDN);
        mpfr_mul(r9074, r9073, r9061, MPFR_RNDN);
        mpfr_div(r9075, r9072, r9074, MPFR_RNDN);
        mpfr_mul(r9076, r9062, r9075, MPFR_RNDN);
        return mpfr_get_d(r9076, MPFR_RNDN);
}

