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

char *name = "Destination given bearing on a great circle";

double f_if(float lambda1, float phi1, float __attribute__((unused)) phi2, float delta, float theta) {
        float r9349 = lambda1;
        float r9350 = theta;
        float r9351 = sin(r9350);
        float r9352 = delta;
        float r9353 = sin(r9352);
        float r9354 = r9351 * r9353;
        float r9355 = phi1;
        float r9356 = cos(r9355);
        float r9357 = r9354 * r9356;
        float r9358 = cos(r9352);
        float r9359 = sin(r9355);
        float r9360 = r9359 * r9358;
        float r9361 = r9356 * r9353;
        float r9362 = cos(r9350);
        float r9363 = r9361 * r9362;
        float r9364 = r9360 + r9363;
        float r9365 = asin(r9364);
        float r9366 = sin(r9365);
        float r9367 = r9359 * r9366;
        float r9368 = r9358 - r9367;
        float r9369 = atan2(r9357, r9368);
        float r9370 = r9349 + r9369;
        return r9370;
}

double f_id(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r9371 = lambda1;
        double r9372 = theta;
        double r9373 = sin(r9372);
        double r9374 = delta;
        double r9375 = sin(r9374);
        double r9376 = r9373 * r9375;
        double r9377 = phi1;
        double r9378 = cos(r9377);
        double r9379 = r9376 * r9378;
        double r9380 = cos(r9374);
        double r9381 = sin(r9377);
        double r9382 = r9381 * r9380;
        double r9383 = r9378 * r9375;
        double r9384 = cos(r9372);
        double r9385 = r9383 * r9384;
        double r9386 = r9382 + r9385;
        double r9387 = asin(r9386);
        double r9388 = sin(r9387);
        double r9389 = r9381 * r9388;
        double r9390 = r9380 - r9389;
        double r9391 = atan2(r9379, r9390);
        double r9392 = r9371 + r9391;
        return r9392;
}


double f_of(float lambda1, float phi1, float __attribute__((unused)) phi2, float delta, float theta) {
        float r9393 = phi1;
        float r9394 = cos(r9393);
        float r9395 = delta;
        float r9396 = sin(r9395);
        float r9397 = theta;
        float r9398 = sin(r9397);
        float r9399 = r9396 * r9398;
        float r9400 = r9394 * r9399;
        float r9401 = cos(r9395);
        float r9402 = 2.0f;
        float r9403 = pow(r9401, r9402);
        float r9404 = pow(r9396, r9402);
        float r9405 = sin(r9393);
        float r9406 = pow(r9405, r9402);
        float r9407 = cos(r9397);
        float r9408 = pow(r9407, r9402);
        float r9409 = pow(r9394, r9402);
        float r9410 = r9408 * r9409;
        float r9411 = r9406 * r9410;
        float r9412 = r9404 * r9411;
        float r9413 = 3.0f;
        float r9414 = pow(r9405, r9413);
        float r9415 = r9401 * r9394;
        float r9416 = r9407 * r9415;
        float r9417 = r9414 * r9416;
        float r9418 = r9417 * r9396;
        float r9419 = r9396 * r9401;
        float r9420 = r9419 * r9407;
        float r9421 = r9394 * r9420;
        float r9422 = r9421 * r9414;
        float r9423 = r9418 + r9422;
        float r9424 = 4.0f;
        float r9425 = pow(r9405, r9424);
        float r9426 = r9403 * r9425;
        float r9427 = r9423 + r9426;
        float r9428 = r9412 + r9427;
        float r9429 = r9403 - r9428;
        float r9430 = r9394 * r9396;
        float r9431 = r9430 * r9407;
        float r9432 = r9401 * r9405;
        float r9433 = r9431 + r9432;
        float r9434 = asin(r9433);
        float r9435 = sin(r9434);
        float r9436 = r9405 * r9435;
        float r9437 = r9401 + r9436;
        float r9438 = r9429 / r9437;
        float r9439 = atan2(r9400, r9438);
        float r9440 = lambda1;
        float r9441 = r9439 + r9440;
        return r9441;
}

double f_od(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r9442 = phi1;
        double r9443 = cos(r9442);
        double r9444 = delta;
        double r9445 = sin(r9444);
        double r9446 = theta;
        double r9447 = sin(r9446);
        double r9448 = r9445 * r9447;
        double r9449 = r9443 * r9448;
        double r9450 = cos(r9444);
        double r9451 = 2.0;
        double r9452 = pow(r9450, r9451);
        double r9453 = pow(r9445, r9451);
        double r9454 = sin(r9442);
        double r9455 = pow(r9454, r9451);
        double r9456 = cos(r9446);
        double r9457 = pow(r9456, r9451);
        double r9458 = pow(r9443, r9451);
        double r9459 = r9457 * r9458;
        double r9460 = r9455 * r9459;
        double r9461 = r9453 * r9460;
        double r9462 = 3.0;
        double r9463 = pow(r9454, r9462);
        double r9464 = r9450 * r9443;
        double r9465 = r9456 * r9464;
        double r9466 = r9463 * r9465;
        double r9467 = r9466 * r9445;
        double r9468 = r9445 * r9450;
        double r9469 = r9468 * r9456;
        double r9470 = r9443 * r9469;
        double r9471 = r9470 * r9463;
        double r9472 = r9467 + r9471;
        double r9473 = 4.0;
        double r9474 = pow(r9454, r9473);
        double r9475 = r9452 * r9474;
        double r9476 = r9472 + r9475;
        double r9477 = r9461 + r9476;
        double r9478 = r9452 - r9477;
        double r9479 = r9443 * r9445;
        double r9480 = r9479 * r9456;
        double r9481 = r9450 * r9454;
        double r9482 = r9480 + r9481;
        double r9483 = asin(r9482);
        double r9484 = sin(r9483);
        double r9485 = r9454 * r9484;
        double r9486 = r9450 + r9485;
        double r9487 = r9478 / r9486;
        double r9488 = atan2(r9449, r9487);
        double r9489 = lambda1;
        double r9490 = r9488 + r9489;
        return r9490;
}

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 r9491, r9492, r9493, r9494, r9495, r9496, r9497, r9498, r9499, r9500, r9501, r9502, r9503, r9504, r9505, r9506, r9507, r9508, r9509, r9510, r9511, r9512;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9491);
        mpfr_init(r9492);
        mpfr_init(r9493);
        mpfr_init(r9494);
        mpfr_init(r9495);
        mpfr_init(r9496);
        mpfr_init(r9497);
        mpfr_init(r9498);
        mpfr_init(r9499);
        mpfr_init(r9500);
        mpfr_init(r9501);
        mpfr_init(r9502);
        mpfr_init(r9503);
        mpfr_init(r9504);
        mpfr_init(r9505);
        mpfr_init(r9506);
        mpfr_init(r9507);
        mpfr_init(r9508);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
        mpfr_init(r9512);
}

double f_im(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        mpfr_set_d(r9491, lambda1, MPFR_RNDN);
        mpfr_set_d(r9492, theta, MPFR_RNDN);
        mpfr_sin(r9493, r9492, MPFR_RNDN);
        mpfr_set_d(r9494, delta, MPFR_RNDN);
        mpfr_sin(r9495, r9494, MPFR_RNDN);
        mpfr_mul(r9496, r9493, r9495, MPFR_RNDN);
        mpfr_set_d(r9497, phi1, MPFR_RNDN);
        mpfr_cos(r9498, r9497, MPFR_RNDN);
        mpfr_mul(r9499, r9496, r9498, MPFR_RNDN);
        mpfr_cos(r9500, r9494, MPFR_RNDN);
        mpfr_sin(r9501, r9497, MPFR_RNDN);
        mpfr_mul(r9502, r9501, r9500, MPFR_RNDN);
        mpfr_mul(r9503, r9498, r9495, MPFR_RNDN);
        mpfr_cos(r9504, r9492, MPFR_RNDN);
        mpfr_mul(r9505, r9503, r9504, MPFR_RNDN);
        mpfr_add(r9506, r9502, r9505, MPFR_RNDN);
        mpfr_asin(r9507, r9506, MPFR_RNDN);
        mpfr_sin(r9508, r9507, MPFR_RNDN);
        mpfr_mul(r9509, r9501, r9508, MPFR_RNDN);
        mpfr_sub(r9510, r9500, r9509, MPFR_RNDN);
        mpfr_atan2(r9511, r9499, r9510, MPFR_RNDN);
        mpfr_add(r9512, r9491, r9511, MPFR_RNDN);
        return mpfr_get_d(r9512, MPFR_RNDN);
}

static mpfr_t r9513, r9514, r9515, r9516, r9517, r9518, r9519, r9520, r9521, r9522, r9523, r9524, r9525, r9526, r9527, r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535, r9536, r9537, r9538, r9539, r9540, r9541, r9542, r9543, r9544, r9545, r9546, r9547, r9548, r9549, r9550, r9551, r9552, r9553, r9554, r9555, r9556, r9557, r9558, r9559, r9560, r9561;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9513);
        mpfr_init(r9514);
        mpfr_init(r9515);
        mpfr_init(r9516);
        mpfr_init(r9517);
        mpfr_init(r9518);
        mpfr_init(r9519);
        mpfr_init(r9520);
        mpfr_init(r9521);
        mpfr_init_set_str(r9522, "2", 10, MPFR_RNDN);
        mpfr_init(r9523);
        mpfr_init(r9524);
        mpfr_init(r9525);
        mpfr_init(r9526);
        mpfr_init(r9527);
        mpfr_init(r9528);
        mpfr_init(r9529);
        mpfr_init(r9530);
        mpfr_init(r9531);
        mpfr_init(r9532);
        mpfr_init_set_str(r9533, "3", 10, MPFR_RNDN);
        mpfr_init(r9534);
        mpfr_init(r9535);
        mpfr_init(r9536);
        mpfr_init(r9537);
        mpfr_init(r9538);
        mpfr_init(r9539);
        mpfr_init(r9540);
        mpfr_init(r9541);
        mpfr_init(r9542);
        mpfr_init(r9543);
        mpfr_init_set_str(r9544, "4", 10, MPFR_RNDN);
        mpfr_init(r9545);
        mpfr_init(r9546);
        mpfr_init(r9547);
        mpfr_init(r9548);
        mpfr_init(r9549);
        mpfr_init(r9550);
        mpfr_init(r9551);
        mpfr_init(r9552);
        mpfr_init(r9553);
        mpfr_init(r9554);
        mpfr_init(r9555);
        mpfr_init(r9556);
        mpfr_init(r9557);
        mpfr_init(r9558);
        mpfr_init(r9559);
        mpfr_init(r9560);
        mpfr_init(r9561);
}

double f_fm(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        mpfr_set_d(r9513, phi1, MPFR_RNDN);
        mpfr_cos(r9514, r9513, MPFR_RNDN);
        mpfr_set_d(r9515, delta, MPFR_RNDN);
        mpfr_sin(r9516, r9515, MPFR_RNDN);
        mpfr_set_d(r9517, theta, MPFR_RNDN);
        mpfr_sin(r9518, r9517, MPFR_RNDN);
        mpfr_mul(r9519, r9516, r9518, MPFR_RNDN);
        mpfr_mul(r9520, r9514, r9519, MPFR_RNDN);
        mpfr_cos(r9521, r9515, MPFR_RNDN);
        ;
        mpfr_pow(r9523, r9521, r9522, MPFR_RNDN);
        mpfr_pow(r9524, r9516, r9522, MPFR_RNDN);
        mpfr_sin(r9525, r9513, MPFR_RNDN);
        mpfr_pow(r9526, r9525, r9522, MPFR_RNDN);
        mpfr_cos(r9527, r9517, MPFR_RNDN);
        mpfr_pow(r9528, r9527, r9522, MPFR_RNDN);
        mpfr_pow(r9529, r9514, r9522, MPFR_RNDN);
        mpfr_mul(r9530, r9528, r9529, MPFR_RNDN);
        mpfr_mul(r9531, r9526, r9530, MPFR_RNDN);
        mpfr_mul(r9532, r9524, r9531, MPFR_RNDN);
        ;
        mpfr_pow(r9534, r9525, r9533, MPFR_RNDN);
        mpfr_mul(r9535, r9521, r9514, MPFR_RNDN);
        mpfr_mul(r9536, r9527, r9535, MPFR_RNDN);
        mpfr_mul(r9537, r9534, r9536, MPFR_RNDN);
        mpfr_mul(r9538, r9537, r9516, MPFR_RNDN);
        mpfr_mul(r9539, r9516, r9521, MPFR_RNDN);
        mpfr_mul(r9540, r9539, r9527, MPFR_RNDN);
        mpfr_mul(r9541, r9514, r9540, MPFR_RNDN);
        mpfr_mul(r9542, r9541, r9534, MPFR_RNDN);
        mpfr_add(r9543, r9538, r9542, MPFR_RNDN);
        ;
        mpfr_pow(r9545, r9525, r9544, MPFR_RNDN);
        mpfr_mul(r9546, r9523, r9545, MPFR_RNDN);
        mpfr_add(r9547, r9543, r9546, MPFR_RNDN);
        mpfr_add(r9548, r9532, r9547, MPFR_RNDN);
        mpfr_sub(r9549, r9523, r9548, MPFR_RNDN);
        mpfr_mul(r9550, r9514, r9516, MPFR_RNDN);
        mpfr_mul(r9551, r9550, r9527, MPFR_RNDN);
        mpfr_mul(r9552, r9521, r9525, MPFR_RNDN);
        mpfr_add(r9553, r9551, r9552, MPFR_RNDN);
        mpfr_asin(r9554, r9553, MPFR_RNDN);
        mpfr_sin(r9555, r9554, MPFR_RNDN);
        mpfr_mul(r9556, r9525, r9555, MPFR_RNDN);
        mpfr_add(r9557, r9521, r9556, MPFR_RNDN);
        mpfr_div(r9558, r9549, r9557, MPFR_RNDN);
        mpfr_atan2(r9559, r9520, r9558, MPFR_RNDN);
        mpfr_set_d(r9560, lambda1, MPFR_RNDN);
        mpfr_add(r9561, r9559, r9560, MPFR_RNDN);
        return mpfr_get_d(r9561, MPFR_RNDN);
}

static mpfr_t r9562, r9563, r9564, r9565, r9566, r9567, r9568, r9569, r9570, r9571, r9572, r9573, r9574, r9575, r9576, r9577, r9578, r9579, r9580, r9581, r9582, r9583, r9584, r9585, r9586, r9587, r9588, r9589, r9590, r9591, r9592, r9593, r9594, r9595, r9596, r9597, r9598, r9599, r9600, r9601, r9602, r9603, r9604, r9605, r9606, r9607, r9608, r9609, r9610;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9562);
        mpfr_init(r9563);
        mpfr_init(r9564);
        mpfr_init(r9565);
        mpfr_init(r9566);
        mpfr_init(r9567);
        mpfr_init(r9568);
        mpfr_init(r9569);
        mpfr_init(r9570);
        mpfr_init_set_str(r9571, "2", 10, MPFR_RNDN);
        mpfr_init(r9572);
        mpfr_init(r9573);
        mpfr_init(r9574);
        mpfr_init(r9575);
        mpfr_init(r9576);
        mpfr_init(r9577);
        mpfr_init(r9578);
        mpfr_init(r9579);
        mpfr_init(r9580);
        mpfr_init(r9581);
        mpfr_init_set_str(r9582, "3", 10, MPFR_RNDN);
        mpfr_init(r9583);
        mpfr_init(r9584);
        mpfr_init(r9585);
        mpfr_init(r9586);
        mpfr_init(r9587);
        mpfr_init(r9588);
        mpfr_init(r9589);
        mpfr_init(r9590);
        mpfr_init(r9591);
        mpfr_init(r9592);
        mpfr_init_set_str(r9593, "4", 10, MPFR_RNDN);
        mpfr_init(r9594);
        mpfr_init(r9595);
        mpfr_init(r9596);
        mpfr_init(r9597);
        mpfr_init(r9598);
        mpfr_init(r9599);
        mpfr_init(r9600);
        mpfr_init(r9601);
        mpfr_init(r9602);
        mpfr_init(r9603);
        mpfr_init(r9604);
        mpfr_init(r9605);
        mpfr_init(r9606);
        mpfr_init(r9607);
        mpfr_init(r9608);
        mpfr_init(r9609);
        mpfr_init(r9610);
}

double f_dm(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        mpfr_set_d(r9562, phi1, MPFR_RNDN);
        mpfr_cos(r9563, r9562, MPFR_RNDN);
        mpfr_set_d(r9564, delta, MPFR_RNDN);
        mpfr_sin(r9565, r9564, MPFR_RNDN);
        mpfr_set_d(r9566, theta, MPFR_RNDN);
        mpfr_sin(r9567, r9566, MPFR_RNDN);
        mpfr_mul(r9568, r9565, r9567, MPFR_RNDN);
        mpfr_mul(r9569, r9563, r9568, MPFR_RNDN);
        mpfr_cos(r9570, r9564, MPFR_RNDN);
        ;
        mpfr_pow(r9572, r9570, r9571, MPFR_RNDN);
        mpfr_pow(r9573, r9565, r9571, MPFR_RNDN);
        mpfr_sin(r9574, r9562, MPFR_RNDN);
        mpfr_pow(r9575, r9574, r9571, MPFR_RNDN);
        mpfr_cos(r9576, r9566, MPFR_RNDN);
        mpfr_pow(r9577, r9576, r9571, MPFR_RNDN);
        mpfr_pow(r9578, r9563, r9571, MPFR_RNDN);
        mpfr_mul(r9579, r9577, r9578, MPFR_RNDN);
        mpfr_mul(r9580, r9575, r9579, MPFR_RNDN);
        mpfr_mul(r9581, r9573, r9580, MPFR_RNDN);
        ;
        mpfr_pow(r9583, r9574, r9582, MPFR_RNDN);
        mpfr_mul(r9584, r9570, r9563, MPFR_RNDN);
        mpfr_mul(r9585, r9576, r9584, MPFR_RNDN);
        mpfr_mul(r9586, r9583, r9585, MPFR_RNDN);
        mpfr_mul(r9587, r9586, r9565, MPFR_RNDN);
        mpfr_mul(r9588, r9565, r9570, MPFR_RNDN);
        mpfr_mul(r9589, r9588, r9576, MPFR_RNDN);
        mpfr_mul(r9590, r9563, r9589, MPFR_RNDN);
        mpfr_mul(r9591, r9590, r9583, MPFR_RNDN);
        mpfr_add(r9592, r9587, r9591, MPFR_RNDN);
        ;
        mpfr_pow(r9594, r9574, r9593, MPFR_RNDN);
        mpfr_mul(r9595, r9572, r9594, MPFR_RNDN);
        mpfr_add(r9596, r9592, r9595, MPFR_RNDN);
        mpfr_add(r9597, r9581, r9596, MPFR_RNDN);
        mpfr_sub(r9598, r9572, r9597, MPFR_RNDN);
        mpfr_mul(r9599, r9563, r9565, MPFR_RNDN);
        mpfr_mul(r9600, r9599, r9576, MPFR_RNDN);
        mpfr_mul(r9601, r9570, r9574, MPFR_RNDN);
        mpfr_add(r9602, r9600, r9601, MPFR_RNDN);
        mpfr_asin(r9603, r9602, MPFR_RNDN);
        mpfr_sin(r9604, r9603, MPFR_RNDN);
        mpfr_mul(r9605, r9574, r9604, MPFR_RNDN);
        mpfr_add(r9606, r9570, r9605, MPFR_RNDN);
        mpfr_div(r9607, r9598, r9606, MPFR_RNDN);
        mpfr_atan2(r9608, r9569, r9607, MPFR_RNDN);
        mpfr_set_d(r9609, lambda1, MPFR_RNDN);
        mpfr_add(r9610, r9608, r9609, MPFR_RNDN);
        return mpfr_get_d(r9610, MPFR_RNDN);
}

