#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 r8234 = 2.0f;
        float r8235 = t;
        float r8236 = 3.0f;
        float r8237 = pow(r8235, r8236);
        float r8238 = l;
        float r8239 = r8238 * r8238;
        float r8240 = r8237 / r8239;
        float r8241 = k;
        float r8242 = sin(r8241);
        float r8243 = r8240 * r8242;
        float r8244 = tan(r8241);
        float r8245 = r8243 * r8244;
        float r8246 = 1.0f;
        float r8247 = r8241 / r8235;
        float r8248 = pow(r8247, r8234);
        float r8249 = r8246 + r8248;
        float r8250 = r8249 - r8246;
        float r8251 = r8245 * r8250;
        float r8252 = r8234 / r8251;
        return r8252;
}

double f_id(double t, double l, double k) {
        double r8253 = 2.0;
        double r8254 = t;
        double r8255 = 3.0;
        double r8256 = pow(r8254, r8255);
        double r8257 = l;
        double r8258 = r8257 * r8257;
        double r8259 = r8256 / r8258;
        double r8260 = k;
        double r8261 = sin(r8260);
        double r8262 = r8259 * r8261;
        double r8263 = tan(r8260);
        double r8264 = r8262 * r8263;
        double r8265 = 1.0;
        double r8266 = r8260 / r8254;
        double r8267 = pow(r8266, r8253);
        double r8268 = r8265 + r8267;
        double r8269 = r8268 - r8265;
        double r8270 = r8264 * r8269;
        double r8271 = r8253 / r8270;
        return r8271;
}


double f_of(float t, float l, float k) {
        float r8272 = k;
        float r8273 = cos(r8272);
        float r8274 = l;
        float r8275 = 2.0f;
        float r8276 = pow(r8274, r8275);
        float r8277 = r8273 * r8276;
        float r8278 = sin(r8272);
        float r8279 = pow(r8278, r8275);
        float r8280 = pow(r8272, r8275);
        float r8281 = r8279 * r8280;
        float r8282 = t;
        float r8283 = r8281 * r8282;
        float r8284 = r8277 / r8283;
        float r8285 = r8284 * r8275;
        float r8286 = -5.102484297178739e+304f;
        bool r8287 = r8285 <= r8286;
        float r8288 = r8272 / r8282;
        float r8289 = fabs(r8288);
        float r8290 = r8273 / r8289;
        float r8291 = 1.0f;
        float r8292 = r8291 / r8282;
        float r8293 = r8292 / r8278;
        float r8294 = r8290 * r8293;
        float r8295 = r8274 / r8282;
        float r8296 = r8294 * r8295;
        float r8297 = r8274 * r8296;
        float r8298 = r8275 / r8282;
        float r8299 = r8298 / r8278;
        float r8300 = r8299 / r8289;
        float r8301 = r8297 * r8300;
        float r8302 = -1.7772874778501266e-209f;
        bool r8303 = r8285 <= r8302;
        float r8304 = tan(r8272);
        float r8305 = r8295 / r8304;
        float r8306 = r8305 / r8289;
        float r8307 = r8299 * r8274;
        float r8308 = r8282 * r8289;
        float r8309 = r8307 / r8308;
        float r8310 = r8306 * r8309;
        float r8311 = r8303 ? r8285 : r8310;
        float r8312 = r8287 ? r8301 : r8311;
        return r8312;
}

double f_od(double t, double l, double k) {
        double r8313 = k;
        double r8314 = cos(r8313);
        double r8315 = l;
        double r8316 = 2.0;
        double r8317 = pow(r8315, r8316);
        double r8318 = r8314 * r8317;
        double r8319 = sin(r8313);
        double r8320 = pow(r8319, r8316);
        double r8321 = pow(r8313, r8316);
        double r8322 = r8320 * r8321;
        double r8323 = t;
        double r8324 = r8322 * r8323;
        double r8325 = r8318 / r8324;
        double r8326 = r8325 * r8316;
        double r8327 = -5.102484297178739e+304;
        bool r8328 = r8326 <= r8327;
        double r8329 = r8313 / r8323;
        double r8330 = fabs(r8329);
        double r8331 = r8314 / r8330;
        double r8332 = 1.0;
        double r8333 = r8332 / r8323;
        double r8334 = r8333 / r8319;
        double r8335 = r8331 * r8334;
        double r8336 = r8315 / r8323;
        double r8337 = r8335 * r8336;
        double r8338 = r8315 * r8337;
        double r8339 = r8316 / r8323;
        double r8340 = r8339 / r8319;
        double r8341 = r8340 / r8330;
        double r8342 = r8338 * r8341;
        double r8343 = -1.7772874778501266e-209;
        bool r8344 = r8326 <= r8343;
        double r8345 = tan(r8313);
        double r8346 = r8336 / r8345;
        double r8347 = r8346 / r8330;
        double r8348 = r8340 * r8315;
        double r8349 = r8323 * r8330;
        double r8350 = r8348 / r8349;
        double r8351 = r8347 * r8350;
        double r8352 = r8344 ? r8326 : r8351;
        double r8353 = r8328 ? r8342 : r8352;
        return r8353;
}

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 r8354, r8355, r8356, r8357, r8358, r8359, r8360, r8361, r8362, r8363, r8364, r8365, r8366, r8367, r8368, r8369, r8370, r8371, r8372;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(4432);
        mpfr_init_set_str(r8354, "2", 10, MPFR_RNDN);
        mpfr_init(r8355);
        mpfr_init_set_str(r8356, "3", 10, MPFR_RNDN);
        mpfr_init(r8357);
        mpfr_init(r8358);
        mpfr_init(r8359);
        mpfr_init(r8360);
        mpfr_init(r8361);
        mpfr_init(r8362);
        mpfr_init(r8363);
        mpfr_init(r8364);
        mpfr_init(r8365);
        mpfr_init_set_str(r8366, "1", 10, MPFR_RNDN);
        mpfr_init(r8367);
        mpfr_init(r8368);
        mpfr_init(r8369);
        mpfr_init(r8370);
        mpfr_init(r8371);
        mpfr_init(r8372);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r8355, t, MPFR_RNDN);
        ;
        mpfr_pow(r8357, r8355, r8356, MPFR_RNDN);
        mpfr_set_d(r8358, l, MPFR_RNDN);
        mpfr_mul(r8359, r8358, r8358, MPFR_RNDN);
        mpfr_div(r8360, r8357, r8359, MPFR_RNDN);
        mpfr_set_d(r8361, k, MPFR_RNDN);
        mpfr_sin(r8362, r8361, MPFR_RNDN);
        mpfr_mul(r8363, r8360, r8362, MPFR_RNDN);
        mpfr_tan(r8364, r8361, MPFR_RNDN);
        mpfr_mul(r8365, r8363, r8364, MPFR_RNDN);
        ;
        mpfr_div(r8367, r8361, r8355, MPFR_RNDN);
        mpfr_pow(r8368, r8367, r8354, MPFR_RNDN);
        mpfr_add(r8369, r8366, r8368, MPFR_RNDN);
        mpfr_sub(r8370, r8369, r8366, MPFR_RNDN);
        mpfr_mul(r8371, r8365, r8370, MPFR_RNDN);
        mpfr_div(r8372, r8354, r8371, MPFR_RNDN);
        return mpfr_get_d(r8372, MPFR_RNDN);
}

static mpfr_t r8373, r8374, r8375, r8376, r8377, r8378, r8379, r8380, r8381, r8382, r8383, r8384, r8385, r8386, r8387, r8388, r8389, r8390, r8391, r8392, r8393, r8394, r8395, r8396, r8397, r8398, r8399, r8400, r8401, r8402, r8403, r8404, r8405, r8406, r8407, r8408, r8409, r8410, r8411, r8412, r8413;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(4432);
        mpfr_init(r8373);
        mpfr_init(r8374);
        mpfr_init(r8375);
        mpfr_init_set_str(r8376, "2", 10, MPFR_RNDN);
        mpfr_init(r8377);
        mpfr_init(r8378);
        mpfr_init(r8379);
        mpfr_init(r8380);
        mpfr_init(r8381);
        mpfr_init(r8382);
        mpfr_init(r8383);
        mpfr_init(r8384);
        mpfr_init(r8385);
        mpfr_init(r8386);
        mpfr_init_set_str(r8387, "-5.102484297178739e+304", 10, MPFR_RNDN);
        mpfr_init(r8388);
        mpfr_init(r8389);
        mpfr_init(r8390);
        mpfr_init(r8391);
        mpfr_init_set_str(r8392, "1", 10, MPFR_RNDN);
        mpfr_init(r8393);
        mpfr_init(r8394);
        mpfr_init(r8395);
        mpfr_init(r8396);
        mpfr_init(r8397);
        mpfr_init(r8398);
        mpfr_init(r8399);
        mpfr_init(r8400);
        mpfr_init(r8401);
        mpfr_init(r8402);
        mpfr_init_set_str(r8403, "-1.7772874778501266e-209", 10, MPFR_RNDN);
        mpfr_init(r8404);
        mpfr_init(r8405);
        mpfr_init(r8406);
        mpfr_init(r8407);
        mpfr_init(r8408);
        mpfr_init(r8409);
        mpfr_init(r8410);
        mpfr_init(r8411);
        mpfr_init(r8412);
        mpfr_init(r8413);
}

double f_fm(double t, double l, double k) {
        mpfr_set_d(r8373, k, MPFR_RNDN);
        mpfr_cos(r8374, r8373, MPFR_RNDN);
        mpfr_set_d(r8375, l, MPFR_RNDN);
        ;
        mpfr_pow(r8377, r8375, r8376, MPFR_RNDN);
        mpfr_mul(r8378, r8374, r8377, MPFR_RNDN);
        mpfr_sin(r8379, r8373, MPFR_RNDN);
        mpfr_pow(r8380, r8379, r8376, MPFR_RNDN);
        mpfr_pow(r8381, r8373, r8376, MPFR_RNDN);
        mpfr_mul(r8382, r8380, r8381, MPFR_RNDN);
        mpfr_set_d(r8383, t, MPFR_RNDN);
        mpfr_mul(r8384, r8382, r8383, MPFR_RNDN);
        mpfr_div(r8385, r8378, r8384, MPFR_RNDN);
        mpfr_mul(r8386, r8385, r8376, MPFR_RNDN);
        ;
        mpfr_set_si(r8388, mpfr_cmp(r8386, r8387) <= 0, MPFR_RNDN);
        mpfr_div(r8389, r8373, r8383, MPFR_RNDN);
        mpfr_abs(r8390, r8389, MPFR_RNDN);
        mpfr_div(r8391, r8374, r8390, MPFR_RNDN);
        ;
        mpfr_div(r8393, r8392, r8383, MPFR_RNDN);
        mpfr_div(r8394, r8393, r8379, MPFR_RNDN);
        mpfr_mul(r8395, r8391, r8394, MPFR_RNDN);
        mpfr_div(r8396, r8375, r8383, MPFR_RNDN);
        mpfr_mul(r8397, r8395, r8396, MPFR_RNDN);
        mpfr_mul(r8398, r8375, r8397, MPFR_RNDN);
        mpfr_div(r8399, r8376, r8383, MPFR_RNDN);
        mpfr_div(r8400, r8399, r8379, MPFR_RNDN);
        mpfr_div(r8401, r8400, r8390, MPFR_RNDN);
        mpfr_mul(r8402, r8398, r8401, MPFR_RNDN);
        ;
        mpfr_set_si(r8404, mpfr_cmp(r8386, r8403) <= 0, MPFR_RNDN);
        mpfr_tan(r8405, r8373, MPFR_RNDN);
        mpfr_div(r8406, r8396, r8405, MPFR_RNDN);
        mpfr_div(r8407, r8406, r8390, MPFR_RNDN);
        mpfr_mul(r8408, r8400, r8375, MPFR_RNDN);
        mpfr_mul(r8409, r8383, r8390, MPFR_RNDN);
        mpfr_div(r8410, r8408, r8409, MPFR_RNDN);
        mpfr_mul(r8411, r8407, r8410, MPFR_RNDN);
        if (mpfr_get_si(r8404, MPFR_RNDN)) { mpfr_set(r8412, r8386, MPFR_RNDN); } else { mpfr_set(r8412, r8411, MPFR_RNDN); };
        if (mpfr_get_si(r8388, MPFR_RNDN)) { mpfr_set(r8413, r8402, MPFR_RNDN); } else { mpfr_set(r8413, r8412, MPFR_RNDN); };
        return mpfr_get_d(r8413, MPFR_RNDN);
}

static mpfr_t r8414, r8415, r8416, r8417, r8418, r8419, r8420, r8421, r8422, r8423, r8424, r8425, r8426, r8427, r8428, r8429, r8430, r8431, r8432, r8433, r8434, r8435, r8436, r8437, r8438, r8439, r8440, r8441, r8442, r8443, r8444, r8445, r8446, r8447, r8448, r8449, r8450, r8451, r8452, r8453, r8454;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(4432);
        mpfr_init(r8414);
        mpfr_init(r8415);
        mpfr_init(r8416);
        mpfr_init_set_str(r8417, "2", 10, MPFR_RNDN);
        mpfr_init(r8418);
        mpfr_init(r8419);
        mpfr_init(r8420);
        mpfr_init(r8421);
        mpfr_init(r8422);
        mpfr_init(r8423);
        mpfr_init(r8424);
        mpfr_init(r8425);
        mpfr_init(r8426);
        mpfr_init(r8427);
        mpfr_init_set_str(r8428, "-5.102484297178739e+304", 10, MPFR_RNDN);
        mpfr_init(r8429);
        mpfr_init(r8430);
        mpfr_init(r8431);
        mpfr_init(r8432);
        mpfr_init_set_str(r8433, "1", 10, MPFR_RNDN);
        mpfr_init(r8434);
        mpfr_init(r8435);
        mpfr_init(r8436);
        mpfr_init(r8437);
        mpfr_init(r8438);
        mpfr_init(r8439);
        mpfr_init(r8440);
        mpfr_init(r8441);
        mpfr_init(r8442);
        mpfr_init(r8443);
        mpfr_init_set_str(r8444, "-1.7772874778501266e-209", 10, MPFR_RNDN);
        mpfr_init(r8445);
        mpfr_init(r8446);
        mpfr_init(r8447);
        mpfr_init(r8448);
        mpfr_init(r8449);
        mpfr_init(r8450);
        mpfr_init(r8451);
        mpfr_init(r8452);
        mpfr_init(r8453);
        mpfr_init(r8454);
}

double f_dm(double t, double l, double k) {
        mpfr_set_d(r8414, k, MPFR_RNDN);
        mpfr_cos(r8415, r8414, MPFR_RNDN);
        mpfr_set_d(r8416, l, MPFR_RNDN);
        ;
        mpfr_pow(r8418, r8416, r8417, MPFR_RNDN);
        mpfr_mul(r8419, r8415, r8418, MPFR_RNDN);
        mpfr_sin(r8420, r8414, MPFR_RNDN);
        mpfr_pow(r8421, r8420, r8417, MPFR_RNDN);
        mpfr_pow(r8422, r8414, r8417, MPFR_RNDN);
        mpfr_mul(r8423, r8421, r8422, MPFR_RNDN);
        mpfr_set_d(r8424, t, MPFR_RNDN);
        mpfr_mul(r8425, r8423, r8424, MPFR_RNDN);
        mpfr_div(r8426, r8419, r8425, MPFR_RNDN);
        mpfr_mul(r8427, r8426, r8417, MPFR_RNDN);
        ;
        mpfr_set_si(r8429, mpfr_cmp(r8427, r8428) <= 0, MPFR_RNDN);
        mpfr_div(r8430, r8414, r8424, MPFR_RNDN);
        mpfr_abs(r8431, r8430, MPFR_RNDN);
        mpfr_div(r8432, r8415, r8431, MPFR_RNDN);
        ;
        mpfr_div(r8434, r8433, r8424, MPFR_RNDN);
        mpfr_div(r8435, r8434, r8420, MPFR_RNDN);
        mpfr_mul(r8436, r8432, r8435, MPFR_RNDN);
        mpfr_div(r8437, r8416, r8424, MPFR_RNDN);
        mpfr_mul(r8438, r8436, r8437, MPFR_RNDN);
        mpfr_mul(r8439, r8416, r8438, MPFR_RNDN);
        mpfr_div(r8440, r8417, r8424, MPFR_RNDN);
        mpfr_div(r8441, r8440, r8420, MPFR_RNDN);
        mpfr_div(r8442, r8441, r8431, MPFR_RNDN);
        mpfr_mul(r8443, r8439, r8442, MPFR_RNDN);
        ;
        mpfr_set_si(r8445, mpfr_cmp(r8427, r8444) <= 0, MPFR_RNDN);
        mpfr_tan(r8446, r8414, MPFR_RNDN);
        mpfr_div(r8447, r8437, r8446, MPFR_RNDN);
        mpfr_div(r8448, r8447, r8431, MPFR_RNDN);
        mpfr_mul(r8449, r8441, r8416, MPFR_RNDN);
        mpfr_mul(r8450, r8424, r8431, MPFR_RNDN);
        mpfr_div(r8451, r8449, r8450, MPFR_RNDN);
        mpfr_mul(r8452, r8448, r8451, MPFR_RNDN);
        if (mpfr_get_si(r8445, MPFR_RNDN)) { mpfr_set(r8453, r8427, MPFR_RNDN); } else { mpfr_set(r8453, r8452, MPFR_RNDN); };
        if (mpfr_get_si(r8429, MPFR_RNDN)) { mpfr_set(r8454, r8443, MPFR_RNDN); } else { mpfr_set(r8454, r8453, MPFR_RNDN); };
        return mpfr_get_d(r8454, MPFR_RNDN);
}

