#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 r30462252 = 1;
        float r30462253 = 2;
        float r30462254 = r30462252 / r30462253;
        float r30462255 = l;
        float r30462256 = r30462253 * r30462255;
        float r30462257 = Om;
        float r30462258 = r30462256 / r30462257;
        float r30462259 = pow(r30462258, r30462253);
        float r30462260 = kx;
        float r30462261 = sin(r30462260);
        float r30462262 = pow(r30462261, r30462253);
        float r30462263 = ky;
        float r30462264 = sin(r30462263);
        float r30462265 = pow(r30462264, r30462253);
        float r30462266 = r30462262 + r30462265;
        float r30462267 = r30462259 * r30462266;
        float r30462268 = r30462252 + r30462267;
        float r30462269 = sqrt(r30462268);
        float r30462270 = r30462252 / r30462269;
        float r30462271 = r30462252 + r30462270;
        float r30462272 = r30462254 * r30462271;
        float r30462273 = sqrt(r30462272);
        return r30462273;
}

double f_id(double l, double Om, double kx, double ky) {
        double r30462274 = 1;
        double r30462275 = 2;
        double r30462276 = r30462274 / r30462275;
        double r30462277 = l;
        double r30462278 = r30462275 * r30462277;
        double r30462279 = Om;
        double r30462280 = r30462278 / r30462279;
        double r30462281 = pow(r30462280, r30462275);
        double r30462282 = kx;
        double r30462283 = sin(r30462282);
        double r30462284 = pow(r30462283, r30462275);
        double r30462285 = ky;
        double r30462286 = sin(r30462285);
        double r30462287 = pow(r30462286, r30462275);
        double r30462288 = r30462284 + r30462287;
        double r30462289 = r30462281 * r30462288;
        double r30462290 = r30462274 + r30462289;
        double r30462291 = sqrt(r30462290);
        double r30462292 = r30462274 / r30462291;
        double r30462293 = r30462274 + r30462292;
        double r30462294 = r30462276 * r30462293;
        double r30462295 = sqrt(r30462294);
        return r30462295;
}


double f_of(float l, float Om, float kx, float ky) {
        float r30462296 = 1;
        float r30462297 = 2;
        float r30462298 = r30462296 / r30462297;
        float r30462299 = l;
        float r30462300 = r30462297 * r30462299;
        float r30462301 = Om;
        float r30462302 = r30462300 / r30462301;
        float r30462303 = kx;
        float r30462304 = sin(r30462303);
        float r30462305 = pow(r30462304, r30462297);
        float r30462306 = ky;
        float r30462307 = sin(r30462306);
        float r30462308 = pow(r30462307, r30462297);
        float r30462309 = r30462305 + r30462308;
        float r30462310 = r30462302 * r30462309;
        float r30462311 = r30462302 * r30462310;
        float r30462312 = r30462296 + r30462311;
        float r30462313 = sqrt(r30462312);
        float r30462314 = r30462296 / r30462313;
        float r30462315 = r30462296 + r30462314;
        float r30462316 = r30462298 * r30462315;
        float r30462317 = sqrt(r30462316);
        return r30462317;
}

double f_od(double l, double Om, double kx, double ky) {
        double r30462318 = 1;
        double r30462319 = 2;
        double r30462320 = r30462318 / r30462319;
        double r30462321 = l;
        double r30462322 = r30462319 * r30462321;
        double r30462323 = Om;
        double r30462324 = r30462322 / r30462323;
        double r30462325 = kx;
        double r30462326 = sin(r30462325);
        double r30462327 = pow(r30462326, r30462319);
        double r30462328 = ky;
        double r30462329 = sin(r30462328);
        double r30462330 = pow(r30462329, r30462319);
        double r30462331 = r30462327 + r30462330;
        double r30462332 = r30462324 * r30462331;
        double r30462333 = r30462324 * r30462332;
        double r30462334 = r30462318 + r30462333;
        double r30462335 = sqrt(r30462334);
        double r30462336 = r30462318 / r30462335;
        double r30462337 = r30462318 + r30462336;
        double r30462338 = r30462320 * r30462337;
        double r30462339 = sqrt(r30462338);
        return r30462339;
}

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 r30462340, r30462341, r30462342, r30462343, r30462344, r30462345, r30462346, r30462347, r30462348, r30462349, r30462350, r30462351, r30462352, r30462353, r30462354, r30462355, r30462356, r30462357, r30462358, r30462359, r30462360, r30462361;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30462340, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30462341, "2", 10, MPFR_RNDN);
        mpfr_init(r30462342);
        mpfr_init(r30462343);
        mpfr_init(r30462344);
        mpfr_init(r30462345);
        mpfr_init(r30462346);
        mpfr_init(r30462347);
        mpfr_init(r30462348);
        mpfr_init(r30462349);
        mpfr_init(r30462350);
        mpfr_init(r30462351);
        mpfr_init(r30462352);
        mpfr_init(r30462353);
        mpfr_init(r30462354);
        mpfr_init(r30462355);
        mpfr_init(r30462356);
        mpfr_init(r30462357);
        mpfr_init(r30462358);
        mpfr_init(r30462359);
        mpfr_init(r30462360);
        mpfr_init(r30462361);
}

double f_im(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r30462342, r30462340, r30462341, MPFR_RNDN);
        mpfr_set_d(r30462343, l, MPFR_RNDN);
        mpfr_mul(r30462344, r30462341, r30462343, MPFR_RNDN);
        mpfr_set_d(r30462345, Om, MPFR_RNDN);
        mpfr_div(r30462346, r30462344, r30462345, MPFR_RNDN);
        mpfr_pow(r30462347, r30462346, r30462341, MPFR_RNDN);
        mpfr_set_d(r30462348, kx, MPFR_RNDN);
        mpfr_sin(r30462349, r30462348, MPFR_RNDN);
        mpfr_pow(r30462350, r30462349, r30462341, MPFR_RNDN);
        mpfr_set_d(r30462351, ky, MPFR_RNDN);
        mpfr_sin(r30462352, r30462351, MPFR_RNDN);
        mpfr_pow(r30462353, r30462352, r30462341, MPFR_RNDN);
        mpfr_add(r30462354, r30462350, r30462353, MPFR_RNDN);
        mpfr_mul(r30462355, r30462347, r30462354, MPFR_RNDN);
        mpfr_add(r30462356, r30462340, r30462355, MPFR_RNDN);
        mpfr_sqrt(r30462357, r30462356, MPFR_RNDN);
        mpfr_div(r30462358, r30462340, r30462357, MPFR_RNDN);
        mpfr_add(r30462359, r30462340, r30462358, MPFR_RNDN);
        mpfr_mul(r30462360, r30462342, r30462359, MPFR_RNDN);
        mpfr_sqrt(r30462361, r30462360, MPFR_RNDN);
        return mpfr_get_d(r30462361, MPFR_RNDN);
}

static mpfr_t r30462362, r30462363, r30462364, r30462365, r30462366, r30462367, r30462368, r30462369, r30462370, r30462371, r30462372, r30462373, r30462374, r30462375, r30462376, r30462377, r30462378, r30462379, r30462380, r30462381, r30462382, r30462383;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30462362, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30462363, "2", 10, MPFR_RNDN);
        mpfr_init(r30462364);
        mpfr_init(r30462365);
        mpfr_init(r30462366);
        mpfr_init(r30462367);
        mpfr_init(r30462368);
        mpfr_init(r30462369);
        mpfr_init(r30462370);
        mpfr_init(r30462371);
        mpfr_init(r30462372);
        mpfr_init(r30462373);
        mpfr_init(r30462374);
        mpfr_init(r30462375);
        mpfr_init(r30462376);
        mpfr_init(r30462377);
        mpfr_init(r30462378);
        mpfr_init(r30462379);
        mpfr_init(r30462380);
        mpfr_init(r30462381);
        mpfr_init(r30462382);
        mpfr_init(r30462383);
}

double f_fm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r30462364, r30462362, r30462363, MPFR_RNDN);
        mpfr_set_d(r30462365, l, MPFR_RNDN);
        mpfr_mul(r30462366, r30462363, r30462365, MPFR_RNDN);
        mpfr_set_d(r30462367, Om, MPFR_RNDN);
        mpfr_div(r30462368, r30462366, r30462367, MPFR_RNDN);
        mpfr_set_d(r30462369, kx, MPFR_RNDN);
        mpfr_sin(r30462370, r30462369, MPFR_RNDN);
        mpfr_pow(r30462371, r30462370, r30462363, MPFR_RNDN);
        mpfr_set_d(r30462372, ky, MPFR_RNDN);
        mpfr_sin(r30462373, r30462372, MPFR_RNDN);
        mpfr_pow(r30462374, r30462373, r30462363, MPFR_RNDN);
        mpfr_add(r30462375, r30462371, r30462374, MPFR_RNDN);
        mpfr_mul(r30462376, r30462368, r30462375, MPFR_RNDN);
        mpfr_mul(r30462377, r30462368, r30462376, MPFR_RNDN);
        mpfr_add(r30462378, r30462362, r30462377, MPFR_RNDN);
        mpfr_sqrt(r30462379, r30462378, MPFR_RNDN);
        mpfr_div(r30462380, r30462362, r30462379, MPFR_RNDN);
        mpfr_add(r30462381, r30462362, r30462380, MPFR_RNDN);
        mpfr_mul(r30462382, r30462364, r30462381, MPFR_RNDN);
        mpfr_sqrt(r30462383, r30462382, MPFR_RNDN);
        return mpfr_get_d(r30462383, MPFR_RNDN);
}

static mpfr_t r30462384, r30462385, r30462386, r30462387, r30462388, r30462389, r30462390, r30462391, r30462392, r30462393, r30462394, r30462395, r30462396, r30462397, r30462398, r30462399, r30462400, r30462401, r30462402, r30462403, r30462404, r30462405;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30462384, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30462385, "2", 10, MPFR_RNDN);
        mpfr_init(r30462386);
        mpfr_init(r30462387);
        mpfr_init(r30462388);
        mpfr_init(r30462389);
        mpfr_init(r30462390);
        mpfr_init(r30462391);
        mpfr_init(r30462392);
        mpfr_init(r30462393);
        mpfr_init(r30462394);
        mpfr_init(r30462395);
        mpfr_init(r30462396);
        mpfr_init(r30462397);
        mpfr_init(r30462398);
        mpfr_init(r30462399);
        mpfr_init(r30462400);
        mpfr_init(r30462401);
        mpfr_init(r30462402);
        mpfr_init(r30462403);
        mpfr_init(r30462404);
        mpfr_init(r30462405);
}

double f_dm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r30462386, r30462384, r30462385, MPFR_RNDN);
        mpfr_set_d(r30462387, l, MPFR_RNDN);
        mpfr_mul(r30462388, r30462385, r30462387, MPFR_RNDN);
        mpfr_set_d(r30462389, Om, MPFR_RNDN);
        mpfr_div(r30462390, r30462388, r30462389, MPFR_RNDN);
        mpfr_set_d(r30462391, kx, MPFR_RNDN);
        mpfr_sin(r30462392, r30462391, MPFR_RNDN);
        mpfr_pow(r30462393, r30462392, r30462385, MPFR_RNDN);
        mpfr_set_d(r30462394, ky, MPFR_RNDN);
        mpfr_sin(r30462395, r30462394, MPFR_RNDN);
        mpfr_pow(r30462396, r30462395, r30462385, MPFR_RNDN);
        mpfr_add(r30462397, r30462393, r30462396, MPFR_RNDN);
        mpfr_mul(r30462398, r30462390, r30462397, MPFR_RNDN);
        mpfr_mul(r30462399, r30462390, r30462398, MPFR_RNDN);
        mpfr_add(r30462400, r30462384, r30462399, MPFR_RNDN);
        mpfr_sqrt(r30462401, r30462400, MPFR_RNDN);
        mpfr_div(r30462402, r30462384, r30462401, MPFR_RNDN);
        mpfr_add(r30462403, r30462384, r30462402, MPFR_RNDN);
        mpfr_mul(r30462404, r30462386, r30462403, MPFR_RNDN);
        mpfr_sqrt(r30462405, r30462404, MPFR_RNDN);
        return mpfr_get_d(r30462405, MPFR_RNDN);
}

