#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 r21274 = 1;
        float r21275 = 2;
        float r21276 = r21274 / r21275;
        float r21277 = l;
        float r21278 = r21275 * r21277;
        float r21279 = Om;
        float r21280 = r21278 / r21279;
        float r21281 = pow(r21280, r21275);
        float r21282 = kx;
        float r21283 = sin(r21282);
        float r21284 = pow(r21283, r21275);
        float r21285 = ky;
        float r21286 = sin(r21285);
        float r21287 = pow(r21286, r21275);
        float r21288 = r21284 + r21287;
        float r21289 = r21281 * r21288;
        float r21290 = r21274 + r21289;
        float r21291 = sqrt(r21290);
        float r21292 = r21274 / r21291;
        float r21293 = r21274 + r21292;
        float r21294 = r21276 * r21293;
        float r21295 = sqrt(r21294);
        return r21295;
}

double f_id(double l, double Om, double kx, double ky) {
        double r21296 = 1;
        double r21297 = 2;
        double r21298 = r21296 / r21297;
        double r21299 = l;
        double r21300 = r21297 * r21299;
        double r21301 = Om;
        double r21302 = r21300 / r21301;
        double r21303 = pow(r21302, r21297);
        double r21304 = kx;
        double r21305 = sin(r21304);
        double r21306 = pow(r21305, r21297);
        double r21307 = ky;
        double r21308 = sin(r21307);
        double r21309 = pow(r21308, r21297);
        double r21310 = r21306 + r21309;
        double r21311 = r21303 * r21310;
        double r21312 = r21296 + r21311;
        double r21313 = sqrt(r21312);
        double r21314 = r21296 / r21313;
        double r21315 = r21296 + r21314;
        double r21316 = r21298 * r21315;
        double r21317 = sqrt(r21316);
        return r21317;
}


double f_of(float l, float Om, float kx, float ky) {
        float r21318 = 1;
        float r21319 = 2;
        float r21320 = r21318 / r21319;
        float r21321 = l;
        float r21322 = r21319 * r21321;
        float r21323 = Om;
        float r21324 = r21322 / r21323;
        float r21325 = kx;
        float r21326 = sin(r21325);
        float r21327 = pow(r21326, r21319);
        float r21328 = ky;
        float r21329 = sin(r21328);
        float r21330 = pow(r21329, r21319);
        float r21331 = r21327 + r21330;
        float r21332 = r21324 * r21331;
        float r21333 = r21324 * r21332;
        float r21334 = r21318 + r21333;
        float r21335 = sqrt(r21334);
        float r21336 = r21318 / r21335;
        float r21337 = r21318 + r21336;
        float r21338 = r21320 * r21337;
        float r21339 = sqrt(r21338);
        return r21339;
}

double f_od(double l, double Om, double kx, double ky) {
        double r21340 = 1;
        double r21341 = 2;
        double r21342 = r21340 / r21341;
        double r21343 = l;
        double r21344 = r21341 * r21343;
        double r21345 = Om;
        double r21346 = r21344 / r21345;
        double r21347 = kx;
        double r21348 = sin(r21347);
        double r21349 = pow(r21348, r21341);
        double r21350 = ky;
        double r21351 = sin(r21350);
        double r21352 = pow(r21351, r21341);
        double r21353 = r21349 + r21352;
        double r21354 = r21346 * r21353;
        double r21355 = r21346 * r21354;
        double r21356 = r21340 + r21355;
        double r21357 = sqrt(r21356);
        double r21358 = r21340 / r21357;
        double r21359 = r21340 + r21358;
        double r21360 = r21342 * r21359;
        double r21361 = sqrt(r21360);
        return r21361;
}

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 r21362, r21363, r21364, r21365, r21366, r21367, r21368, r21369, r21370, r21371, r21372, r21373, r21374, r21375, r21376, r21377, r21378, r21379, r21380, r21381, r21382, r21383;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21362, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21363, "2", 10, MPFR_RNDN);
        mpfr_init(r21364);
        mpfr_init(r21365);
        mpfr_init(r21366);
        mpfr_init(r21367);
        mpfr_init(r21368);
        mpfr_init(r21369);
        mpfr_init(r21370);
        mpfr_init(r21371);
        mpfr_init(r21372);
        mpfr_init(r21373);
        mpfr_init(r21374);
        mpfr_init(r21375);
        mpfr_init(r21376);
        mpfr_init(r21377);
        mpfr_init(r21378);
        mpfr_init(r21379);
        mpfr_init(r21380);
        mpfr_init(r21381);
        mpfr_init(r21382);
        mpfr_init(r21383);
}

double f_im(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r21364, r21362, r21363, MPFR_RNDN);
        mpfr_set_d(r21365, l, MPFR_RNDN);
        mpfr_mul(r21366, r21363, r21365, MPFR_RNDN);
        mpfr_set_d(r21367, Om, MPFR_RNDN);
        mpfr_div(r21368, r21366, r21367, MPFR_RNDN);
        mpfr_pow(r21369, r21368, r21363, MPFR_RNDN);
        mpfr_set_d(r21370, kx, MPFR_RNDN);
        mpfr_sin(r21371, r21370, MPFR_RNDN);
        mpfr_pow(r21372, r21371, r21363, MPFR_RNDN);
        mpfr_set_d(r21373, ky, MPFR_RNDN);
        mpfr_sin(r21374, r21373, MPFR_RNDN);
        mpfr_pow(r21375, r21374, r21363, MPFR_RNDN);
        mpfr_add(r21376, r21372, r21375, MPFR_RNDN);
        mpfr_mul(r21377, r21369, r21376, MPFR_RNDN);
        mpfr_add(r21378, r21362, r21377, MPFR_RNDN);
        mpfr_sqrt(r21379, r21378, MPFR_RNDN);
        mpfr_div(r21380, r21362, r21379, MPFR_RNDN);
        mpfr_add(r21381, r21362, r21380, MPFR_RNDN);
        mpfr_mul(r21382, r21364, r21381, MPFR_RNDN);
        mpfr_sqrt(r21383, r21382, MPFR_RNDN);
        return mpfr_get_d(r21383, MPFR_RNDN);
}

static mpfr_t r21384, r21385, r21386, r21387, r21388, r21389, r21390, r21391, r21392, r21393, r21394, r21395, r21396, r21397, r21398, r21399, r21400, r21401, r21402, r21403, r21404, r21405;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21384, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21385, "2", 10, MPFR_RNDN);
        mpfr_init(r21386);
        mpfr_init(r21387);
        mpfr_init(r21388);
        mpfr_init(r21389);
        mpfr_init(r21390);
        mpfr_init(r21391);
        mpfr_init(r21392);
        mpfr_init(r21393);
        mpfr_init(r21394);
        mpfr_init(r21395);
        mpfr_init(r21396);
        mpfr_init(r21397);
        mpfr_init(r21398);
        mpfr_init(r21399);
        mpfr_init(r21400);
        mpfr_init(r21401);
        mpfr_init(r21402);
        mpfr_init(r21403);
        mpfr_init(r21404);
        mpfr_init(r21405);
}

double f_fm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r21386, r21384, r21385, MPFR_RNDN);
        mpfr_set_d(r21387, l, MPFR_RNDN);
        mpfr_mul(r21388, r21385, r21387, MPFR_RNDN);
        mpfr_set_d(r21389, Om, MPFR_RNDN);
        mpfr_div(r21390, r21388, r21389, MPFR_RNDN);
        mpfr_set_d(r21391, kx, MPFR_RNDN);
        mpfr_sin(r21392, r21391, MPFR_RNDN);
        mpfr_pow(r21393, r21392, r21385, MPFR_RNDN);
        mpfr_set_d(r21394, ky, MPFR_RNDN);
        mpfr_sin(r21395, r21394, MPFR_RNDN);
        mpfr_pow(r21396, r21395, r21385, MPFR_RNDN);
        mpfr_add(r21397, r21393, r21396, MPFR_RNDN);
        mpfr_mul(r21398, r21390, r21397, MPFR_RNDN);
        mpfr_mul(r21399, r21390, r21398, MPFR_RNDN);
        mpfr_add(r21400, r21384, r21399, MPFR_RNDN);
        mpfr_sqrt(r21401, r21400, MPFR_RNDN);
        mpfr_div(r21402, r21384, r21401, MPFR_RNDN);
        mpfr_add(r21403, r21384, r21402, MPFR_RNDN);
        mpfr_mul(r21404, r21386, r21403, MPFR_RNDN);
        mpfr_sqrt(r21405, r21404, MPFR_RNDN);
        return mpfr_get_d(r21405, MPFR_RNDN);
}

static mpfr_t r21406, r21407, r21408, r21409, r21410, r21411, r21412, r21413, r21414, r21415, r21416, r21417, r21418, r21419, r21420, r21421, r21422, r21423, r21424, r21425, r21426, r21427;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21406, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21407, "2", 10, MPFR_RNDN);
        mpfr_init(r21408);
        mpfr_init(r21409);
        mpfr_init(r21410);
        mpfr_init(r21411);
        mpfr_init(r21412);
        mpfr_init(r21413);
        mpfr_init(r21414);
        mpfr_init(r21415);
        mpfr_init(r21416);
        mpfr_init(r21417);
        mpfr_init(r21418);
        mpfr_init(r21419);
        mpfr_init(r21420);
        mpfr_init(r21421);
        mpfr_init(r21422);
        mpfr_init(r21423);
        mpfr_init(r21424);
        mpfr_init(r21425);
        mpfr_init(r21426);
        mpfr_init(r21427);
}

double f_dm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r21408, r21406, r21407, MPFR_RNDN);
        mpfr_set_d(r21409, l, MPFR_RNDN);
        mpfr_mul(r21410, r21407, r21409, MPFR_RNDN);
        mpfr_set_d(r21411, Om, MPFR_RNDN);
        mpfr_div(r21412, r21410, r21411, MPFR_RNDN);
        mpfr_set_d(r21413, kx, MPFR_RNDN);
        mpfr_sin(r21414, r21413, MPFR_RNDN);
        mpfr_pow(r21415, r21414, r21407, MPFR_RNDN);
        mpfr_set_d(r21416, ky, MPFR_RNDN);
        mpfr_sin(r21417, r21416, MPFR_RNDN);
        mpfr_pow(r21418, r21417, r21407, MPFR_RNDN);
        mpfr_add(r21419, r21415, r21418, MPFR_RNDN);
        mpfr_mul(r21420, r21412, r21419, MPFR_RNDN);
        mpfr_mul(r21421, r21412, r21420, MPFR_RNDN);
        mpfr_add(r21422, r21406, r21421, MPFR_RNDN);
        mpfr_sqrt(r21423, r21422, MPFR_RNDN);
        mpfr_div(r21424, r21406, r21423, MPFR_RNDN);
        mpfr_add(r21425, r21406, r21424, MPFR_RNDN);
        mpfr_mul(r21426, r21408, r21425, MPFR_RNDN);
        mpfr_sqrt(r21427, r21426, MPFR_RNDN);
        return mpfr_get_d(r21427, MPFR_RNDN);
}

