#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 r21158 = 1;
        float r21159 = 2;
        float r21160 = r21158 / r21159;
        float r21161 = l;
        float r21162 = r21159 * r21161;
        float r21163 = Om;
        float r21164 = r21162 / r21163;
        float r21165 = pow(r21164, r21159);
        float r21166 = kx;
        float r21167 = sin(r21166);
        float r21168 = pow(r21167, r21159);
        float r21169 = ky;
        float r21170 = sin(r21169);
        float r21171 = pow(r21170, r21159);
        float r21172 = r21168 + r21171;
        float r21173 = r21165 * r21172;
        float r21174 = r21158 + r21173;
        float r21175 = sqrt(r21174);
        float r21176 = r21158 / r21175;
        float r21177 = r21158 + r21176;
        float r21178 = r21160 * r21177;
        float r21179 = sqrt(r21178);
        return r21179;
}

double f_id(double l, double Om, double kx, double ky) {
        double r21180 = 1;
        double r21181 = 2;
        double r21182 = r21180 / r21181;
        double r21183 = l;
        double r21184 = r21181 * r21183;
        double r21185 = Om;
        double r21186 = r21184 / r21185;
        double r21187 = pow(r21186, r21181);
        double r21188 = kx;
        double r21189 = sin(r21188);
        double r21190 = pow(r21189, r21181);
        double r21191 = ky;
        double r21192 = sin(r21191);
        double r21193 = pow(r21192, r21181);
        double r21194 = r21190 + r21193;
        double r21195 = r21187 * r21194;
        double r21196 = r21180 + r21195;
        double r21197 = sqrt(r21196);
        double r21198 = r21180 / r21197;
        double r21199 = r21180 + r21198;
        double r21200 = r21182 * r21199;
        double r21201 = sqrt(r21200);
        return r21201;
}


double f_of(float l, float Om, float kx, float ky) {
        float r21202 = 1;
        float r21203 = 2;
        float r21204 = r21202 / r21203;
        float r21205 = l;
        float r21206 = r21203 * r21205;
        float r21207 = Om;
        float r21208 = r21206 / r21207;
        float r21209 = kx;
        float r21210 = sin(r21209);
        float r21211 = pow(r21210, r21203);
        float r21212 = ky;
        float r21213 = sin(r21212);
        float r21214 = pow(r21213, r21203);
        float r21215 = r21211 + r21214;
        float r21216 = r21208 * r21215;
        float r21217 = r21208 * r21216;
        float r21218 = r21202 + r21217;
        float r21219 = sqrt(r21218);
        float r21220 = r21202 / r21219;
        float r21221 = r21202 + r21220;
        float r21222 = r21204 * r21221;
        float r21223 = sqrt(r21222);
        return r21223;
}

double f_od(double l, double Om, double kx, double ky) {
        double r21224 = 1;
        double r21225 = 2;
        double r21226 = r21224 / r21225;
        double r21227 = l;
        double r21228 = r21225 * r21227;
        double r21229 = Om;
        double r21230 = r21228 / r21229;
        double r21231 = kx;
        double r21232 = sin(r21231);
        double r21233 = pow(r21232, r21225);
        double r21234 = ky;
        double r21235 = sin(r21234);
        double r21236 = pow(r21235, r21225);
        double r21237 = r21233 + r21236;
        double r21238 = r21230 * r21237;
        double r21239 = r21230 * r21238;
        double r21240 = r21224 + r21239;
        double r21241 = sqrt(r21240);
        double r21242 = r21224 / r21241;
        double r21243 = r21224 + r21242;
        double r21244 = r21226 * r21243;
        double r21245 = sqrt(r21244);
        return r21245;
}

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 r21246, r21247, r21248, r21249, r21250, r21251, r21252, r21253, r21254, r21255, r21256, r21257, r21258, r21259, r21260, r21261, r21262, r21263, r21264, r21265, r21266, r21267;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21246, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21247, "2", 10, MPFR_RNDN);
        mpfr_init(r21248);
        mpfr_init(r21249);
        mpfr_init(r21250);
        mpfr_init(r21251);
        mpfr_init(r21252);
        mpfr_init(r21253);
        mpfr_init(r21254);
        mpfr_init(r21255);
        mpfr_init(r21256);
        mpfr_init(r21257);
        mpfr_init(r21258);
        mpfr_init(r21259);
        mpfr_init(r21260);
        mpfr_init(r21261);
        mpfr_init(r21262);
        mpfr_init(r21263);
        mpfr_init(r21264);
        mpfr_init(r21265);
        mpfr_init(r21266);
        mpfr_init(r21267);
}

double f_im(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r21248, r21246, r21247, MPFR_RNDN);
        mpfr_set_d(r21249, l, MPFR_RNDN);
        mpfr_mul(r21250, r21247, r21249, MPFR_RNDN);
        mpfr_set_d(r21251, Om, MPFR_RNDN);
        mpfr_div(r21252, r21250, r21251, MPFR_RNDN);
        mpfr_pow(r21253, r21252, r21247, MPFR_RNDN);
        mpfr_set_d(r21254, kx, MPFR_RNDN);
        mpfr_sin(r21255, r21254, MPFR_RNDN);
        mpfr_pow(r21256, r21255, r21247, MPFR_RNDN);
        mpfr_set_d(r21257, ky, MPFR_RNDN);
        mpfr_sin(r21258, r21257, MPFR_RNDN);
        mpfr_pow(r21259, r21258, r21247, MPFR_RNDN);
        mpfr_add(r21260, r21256, r21259, MPFR_RNDN);
        mpfr_mul(r21261, r21253, r21260, MPFR_RNDN);
        mpfr_add(r21262, r21246, r21261, MPFR_RNDN);
        mpfr_sqrt(r21263, r21262, MPFR_RNDN);
        mpfr_div(r21264, r21246, r21263, MPFR_RNDN);
        mpfr_add(r21265, r21246, r21264, MPFR_RNDN);
        mpfr_mul(r21266, r21248, r21265, MPFR_RNDN);
        mpfr_sqrt(r21267, r21266, MPFR_RNDN);
        return mpfr_get_d(r21267, MPFR_RNDN);
}

static mpfr_t r21268, r21269, r21270, r21271, r21272, r21273, r21274, r21275, r21276, r21277, r21278, r21279, r21280, r21281, r21282, r21283, r21284, r21285, r21286, r21287, r21288, r21289;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21268, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21269, "2", 10, MPFR_RNDN);
        mpfr_init(r21270);
        mpfr_init(r21271);
        mpfr_init(r21272);
        mpfr_init(r21273);
        mpfr_init(r21274);
        mpfr_init(r21275);
        mpfr_init(r21276);
        mpfr_init(r21277);
        mpfr_init(r21278);
        mpfr_init(r21279);
        mpfr_init(r21280);
        mpfr_init(r21281);
        mpfr_init(r21282);
        mpfr_init(r21283);
        mpfr_init(r21284);
        mpfr_init(r21285);
        mpfr_init(r21286);
        mpfr_init(r21287);
        mpfr_init(r21288);
        mpfr_init(r21289);
}

double f_fm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r21270, r21268, r21269, MPFR_RNDN);
        mpfr_set_d(r21271, l, MPFR_RNDN);
        mpfr_mul(r21272, r21269, r21271, MPFR_RNDN);
        mpfr_set_d(r21273, Om, MPFR_RNDN);
        mpfr_div(r21274, r21272, r21273, MPFR_RNDN);
        mpfr_set_d(r21275, kx, MPFR_RNDN);
        mpfr_sin(r21276, r21275, MPFR_RNDN);
        mpfr_pow(r21277, r21276, r21269, MPFR_RNDN);
        mpfr_set_d(r21278, ky, MPFR_RNDN);
        mpfr_sin(r21279, r21278, MPFR_RNDN);
        mpfr_pow(r21280, r21279, r21269, MPFR_RNDN);
        mpfr_add(r21281, r21277, r21280, MPFR_RNDN);
        mpfr_mul(r21282, r21274, r21281, MPFR_RNDN);
        mpfr_mul(r21283, r21274, r21282, MPFR_RNDN);
        mpfr_add(r21284, r21268, r21283, MPFR_RNDN);
        mpfr_sqrt(r21285, r21284, MPFR_RNDN);
        mpfr_div(r21286, r21268, r21285, MPFR_RNDN);
        mpfr_add(r21287, r21268, r21286, MPFR_RNDN);
        mpfr_mul(r21288, r21270, r21287, MPFR_RNDN);
        mpfr_sqrt(r21289, r21288, MPFR_RNDN);
        return mpfr_get_d(r21289, MPFR_RNDN);
}

static mpfr_t r21290, r21291, r21292, r21293, r21294, r21295, r21296, r21297, r21298, r21299, r21300, r21301, r21302, r21303, r21304, r21305, r21306, r21307, r21308, r21309, r21310, r21311;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21290, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21291, "2", 10, MPFR_RNDN);
        mpfr_init(r21292);
        mpfr_init(r21293);
        mpfr_init(r21294);
        mpfr_init(r21295);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init(r21298);
        mpfr_init(r21299);
        mpfr_init(r21300);
        mpfr_init(r21301);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
        mpfr_init(r21305);
        mpfr_init(r21306);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init(r21311);
}

double f_dm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r21292, r21290, r21291, MPFR_RNDN);
        mpfr_set_d(r21293, l, MPFR_RNDN);
        mpfr_mul(r21294, r21291, r21293, MPFR_RNDN);
        mpfr_set_d(r21295, Om, MPFR_RNDN);
        mpfr_div(r21296, r21294, r21295, MPFR_RNDN);
        mpfr_set_d(r21297, kx, MPFR_RNDN);
        mpfr_sin(r21298, r21297, MPFR_RNDN);
        mpfr_pow(r21299, r21298, r21291, MPFR_RNDN);
        mpfr_set_d(r21300, ky, MPFR_RNDN);
        mpfr_sin(r21301, r21300, MPFR_RNDN);
        mpfr_pow(r21302, r21301, r21291, MPFR_RNDN);
        mpfr_add(r21303, r21299, r21302, MPFR_RNDN);
        mpfr_mul(r21304, r21296, r21303, MPFR_RNDN);
        mpfr_mul(r21305, r21296, r21304, MPFR_RNDN);
        mpfr_add(r21306, r21290, r21305, MPFR_RNDN);
        mpfr_sqrt(r21307, r21306, MPFR_RNDN);
        mpfr_div(r21308, r21290, r21307, MPFR_RNDN);
        mpfr_add(r21309, r21290, r21308, MPFR_RNDN);
        mpfr_mul(r21310, r21292, r21309, MPFR_RNDN);
        mpfr_sqrt(r21311, r21310, MPFR_RNDN);
        return mpfr_get_d(r21311, MPFR_RNDN);
}

