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

char *name = "Numeric.Signal:interpolate   from hsignal-0.2.7.1";

double f_if(float x, float y, float z, float t, float a) {
        float r42373 = x;
        float r42374 = y;
        float r42375 = z;
        float r42376 = r42374 - r42375;
        float r42377 = t;
        float r42378 = r42377 - r42373;
        float r42379 = a;
        float r42380 = r42379 - r42375;
        float r42381 = r42378 / r42380;
        float r42382 = r42376 * r42381;
        float r42383 = r42373 + r42382;
        return r42383;
}

double f_id(double x, double y, double z, double t, double a) {
        double r42384 = x;
        double r42385 = y;
        double r42386 = z;
        double r42387 = r42385 - r42386;
        double r42388 = t;
        double r42389 = r42388 - r42384;
        double r42390 = a;
        double r42391 = r42390 - r42386;
        double r42392 = r42389 / r42391;
        double r42393 = r42387 * r42392;
        double r42394 = r42384 + r42393;
        return r42394;
}


double f_of(float x, float y, float z, float t, float a) {
        float r42395 = a;
        float r42396 = -7.346288643304349e-35f;
        bool r42397 = r42395 <= r42396;
        float r42398 = x;
        float r42399 = y;
        float r42400 = z;
        float r42401 = r42399 - r42400;
        float r42402 = cbrt(r42401);
        float r42403 = t;
        float r42404 = r42403 - r42398;
        float r42405 = cbrt(r42404);
        float r42406 = r42395 - r42400;
        float r42407 = cbrt(r42406);
        float r42408 = r42405 / r42407;
        float r42409 = r42402 * r42408;
        float r42410 = r42409 * (r42409 * r42409);
        float r42411 = r42398 + r42410;
        float r42412 = 2.4800667194058456e-134f;
        bool r42413 = r42395 <= r42412;
        float r42414 = r42399 / r42400;
        float r42415 = r42414 * r42404;
        float r42416 = r42403 - r42415;
        float r42417 = 9.581782060813449e-54f;
        bool r42418 = r42395 <= r42417;
        float r42419 = 2.9697010902129357e-33f;
        bool r42420 = r42395 <= r42419;
        float r42421 = 1.347053492520341e+250f;
        bool r42422 = r42395 <= r42421;
        float r42423 = r42404 / r42406;
        float r42424 = r42401 * r42423;
        float r42425 = r42398 + r42424;
        float r42426 = r42422 ? r42425 : r42425;
        float r42427 = r42420 ? r42416 : r42426;
        float r42428 = r42418 ? r42411 : r42427;
        float r42429 = r42413 ? r42416 : r42428;
        float r42430 = r42397 ? r42411 : r42429;
        return r42430;
}

double f_od(double x, double y, double z, double t, double a) {
        double r42431 = a;
        double r42432 = -7.346288643304349e-35;
        bool r42433 = r42431 <= r42432;
        double r42434 = x;
        double r42435 = y;
        double r42436 = z;
        double r42437 = r42435 - r42436;
        double r42438 = cbrt(r42437);
        double r42439 = t;
        double r42440 = r42439 - r42434;
        double r42441 = cbrt(r42440);
        double r42442 = r42431 - r42436;
        double r42443 = cbrt(r42442);
        double r42444 = r42441 / r42443;
        double r42445 = r42438 * r42444;
        double r42446 = r42445 * (r42445 * r42445);
        double r42447 = r42434 + r42446;
        double r42448 = 2.4800667194058456e-134;
        bool r42449 = r42431 <= r42448;
        double r42450 = r42435 / r42436;
        double r42451 = r42450 * r42440;
        double r42452 = r42439 - r42451;
        double r42453 = 9.581782060813449e-54;
        bool r42454 = r42431 <= r42453;
        double r42455 = 2.9697010902129357e-33;
        bool r42456 = r42431 <= r42455;
        double r42457 = 1.347053492520341e+250;
        bool r42458 = r42431 <= r42457;
        double r42459 = r42440 / r42442;
        double r42460 = r42437 * r42459;
        double r42461 = r42434 + r42460;
        double r42462 = r42458 ? r42461 : r42461;
        double r42463 = r42456 ? r42452 : r42462;
        double r42464 = r42454 ? r42447 : r42463;
        double r42465 = r42449 ? r42452 : r42464;
        double r42466 = r42433 ? r42447 : r42465;
        return r42466;
}

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 r42467, r42468, r42469, r42470, r42471, r42472, r42473, r42474, r42475, r42476, r42477;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42467);
        mpfr_init(r42468);
        mpfr_init(r42469);
        mpfr_init(r42470);
        mpfr_init(r42471);
        mpfr_init(r42472);
        mpfr_init(r42473);
        mpfr_init(r42474);
        mpfr_init(r42475);
        mpfr_init(r42476);
        mpfr_init(r42477);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r42467, x, MPFR_RNDN);
        mpfr_set_d(r42468, y, MPFR_RNDN);
        mpfr_set_d(r42469, z, MPFR_RNDN);
        mpfr_sub(r42470, r42468, r42469, MPFR_RNDN);
        mpfr_set_d(r42471, t, MPFR_RNDN);
        mpfr_sub(r42472, r42471, r42467, MPFR_RNDN);
        mpfr_set_d(r42473, a, MPFR_RNDN);
        mpfr_sub(r42474, r42473, r42469, MPFR_RNDN);
        mpfr_div(r42475, r42472, r42474, MPFR_RNDN);
        mpfr_mul(r42476, r42470, r42475, MPFR_RNDN);
        mpfr_add(r42477, r42467, r42476, MPFR_RNDN);
        return mpfr_get_d(r42477, MPFR_RNDN);
}

static mpfr_t r42478, r42479, r42480, r42481, r42482, r42483, r42484, r42485, r42486, r42487, r42488, r42489, r42490, r42491, r42492, r42493, r42494, r42495, r42496, r42497, r42498, r42499, r42500, r42501, r42502, r42503, r42504, r42505, r42506, r42507, r42508, r42509, r42510, r42511, r42512, r42513;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42478);
        mpfr_init_set_str(r42479, "-7.346288643304349e-35", 10, MPFR_RNDN);
        mpfr_init(r42480);
        mpfr_init(r42481);
        mpfr_init(r42482);
        mpfr_init(r42483);
        mpfr_init(r42484);
        mpfr_init(r42485);
        mpfr_init(r42486);
        mpfr_init(r42487);
        mpfr_init(r42488);
        mpfr_init(r42489);
        mpfr_init(r42490);
        mpfr_init(r42491);
        mpfr_init(r42492);
        mpfr_init(r42493);
        mpfr_init(r42494);
        mpfr_init_set_str(r42495, "2.4800667194058456e-134", 10, MPFR_RNDN);
        mpfr_init(r42496);
        mpfr_init(r42497);
        mpfr_init(r42498);
        mpfr_init(r42499);
        mpfr_init_set_str(r42500, "9.581782060813449e-54", 10, MPFR_RNDN);
        mpfr_init(r42501);
        mpfr_init_set_str(r42502, "2.9697010902129357e-33", 10, MPFR_RNDN);
        mpfr_init(r42503);
        mpfr_init_set_str(r42504, "1.347053492520341e+250", 10, MPFR_RNDN);
        mpfr_init(r42505);
        mpfr_init(r42506);
        mpfr_init(r42507);
        mpfr_init(r42508);
        mpfr_init(r42509);
        mpfr_init(r42510);
        mpfr_init(r42511);
        mpfr_init(r42512);
        mpfr_init(r42513);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r42478, a, MPFR_RNDN);
        ;
        mpfr_set_si(r42480, mpfr_cmp(r42478, r42479) <= 0, MPFR_RNDN);
        mpfr_set_d(r42481, x, MPFR_RNDN);
        mpfr_set_d(r42482, y, MPFR_RNDN);
        mpfr_set_d(r42483, z, MPFR_RNDN);
        mpfr_sub(r42484, r42482, r42483, MPFR_RNDN);
        mpfr_cbrt(r42485, r42484, MPFR_RNDN);
        mpfr_set_d(r42486, t, MPFR_RNDN);
        mpfr_sub(r42487, r42486, r42481, MPFR_RNDN);
        mpfr_cbrt(r42488, r42487, MPFR_RNDN);
        mpfr_sub(r42489, r42478, r42483, MPFR_RNDN);
        mpfr_cbrt(r42490, r42489, MPFR_RNDN);
        mpfr_div(r42491, r42488, r42490, MPFR_RNDN);
        mpfr_mul(r42492, r42485, r42491, MPFR_RNDN);
        mpfr_mul(r42493, r42492, r42492, MPFR_RNDN); mpfr_mul(r42493, r42493, r42492, MPFR_RNDN);
        mpfr_add(r42494, r42481, r42493, MPFR_RNDN);
        ;
        mpfr_set_si(r42496, mpfr_cmp(r42478, r42495) <= 0, MPFR_RNDN);
        mpfr_div(r42497, r42482, r42483, MPFR_RNDN);
        mpfr_mul(r42498, r42497, r42487, MPFR_RNDN);
        mpfr_sub(r42499, r42486, r42498, MPFR_RNDN);
        ;
        mpfr_set_si(r42501, mpfr_cmp(r42478, r42500) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r42503, mpfr_cmp(r42478, r42502) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r42505, mpfr_cmp(r42478, r42504) <= 0, MPFR_RNDN);
        mpfr_div(r42506, r42487, r42489, MPFR_RNDN);
        mpfr_mul(r42507, r42484, r42506, MPFR_RNDN);
        mpfr_add(r42508, r42481, r42507, MPFR_RNDN);
        if (mpfr_get_si(r42505, MPFR_RNDN)) { mpfr_set(r42509, r42508, MPFR_RNDN); } else { mpfr_set(r42509, r42508, MPFR_RNDN); };
        if (mpfr_get_si(r42503, MPFR_RNDN)) { mpfr_set(r42510, r42499, MPFR_RNDN); } else { mpfr_set(r42510, r42509, MPFR_RNDN); };
        if (mpfr_get_si(r42501, MPFR_RNDN)) { mpfr_set(r42511, r42494, MPFR_RNDN); } else { mpfr_set(r42511, r42510, MPFR_RNDN); };
        if (mpfr_get_si(r42496, MPFR_RNDN)) { mpfr_set(r42512, r42499, MPFR_RNDN); } else { mpfr_set(r42512, r42511, MPFR_RNDN); };
        if (mpfr_get_si(r42480, MPFR_RNDN)) { mpfr_set(r42513, r42494, MPFR_RNDN); } else { mpfr_set(r42513, r42512, MPFR_RNDN); };
        return mpfr_get_d(r42513, MPFR_RNDN);
}

static mpfr_t r42514, r42515, r42516, r42517, r42518, r42519, r42520, r42521, r42522, r42523, r42524, r42525, r42526, r42527, r42528, r42529, r42530, r42531, r42532, r42533, r42534, r42535, r42536, r42537, r42538, r42539, r42540, r42541, r42542, r42543, r42544, r42545, r42546, r42547, r42548, r42549;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42514);
        mpfr_init_set_str(r42515, "-7.346288643304349e-35", 10, MPFR_RNDN);
        mpfr_init(r42516);
        mpfr_init(r42517);
        mpfr_init(r42518);
        mpfr_init(r42519);
        mpfr_init(r42520);
        mpfr_init(r42521);
        mpfr_init(r42522);
        mpfr_init(r42523);
        mpfr_init(r42524);
        mpfr_init(r42525);
        mpfr_init(r42526);
        mpfr_init(r42527);
        mpfr_init(r42528);
        mpfr_init(r42529);
        mpfr_init(r42530);
        mpfr_init_set_str(r42531, "2.4800667194058456e-134", 10, MPFR_RNDN);
        mpfr_init(r42532);
        mpfr_init(r42533);
        mpfr_init(r42534);
        mpfr_init(r42535);
        mpfr_init_set_str(r42536, "9.581782060813449e-54", 10, MPFR_RNDN);
        mpfr_init(r42537);
        mpfr_init_set_str(r42538, "2.9697010902129357e-33", 10, MPFR_RNDN);
        mpfr_init(r42539);
        mpfr_init_set_str(r42540, "1.347053492520341e+250", 10, MPFR_RNDN);
        mpfr_init(r42541);
        mpfr_init(r42542);
        mpfr_init(r42543);
        mpfr_init(r42544);
        mpfr_init(r42545);
        mpfr_init(r42546);
        mpfr_init(r42547);
        mpfr_init(r42548);
        mpfr_init(r42549);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r42514, a, MPFR_RNDN);
        ;
        mpfr_set_si(r42516, mpfr_cmp(r42514, r42515) <= 0, MPFR_RNDN);
        mpfr_set_d(r42517, x, MPFR_RNDN);
        mpfr_set_d(r42518, y, MPFR_RNDN);
        mpfr_set_d(r42519, z, MPFR_RNDN);
        mpfr_sub(r42520, r42518, r42519, MPFR_RNDN);
        mpfr_cbrt(r42521, r42520, MPFR_RNDN);
        mpfr_set_d(r42522, t, MPFR_RNDN);
        mpfr_sub(r42523, r42522, r42517, MPFR_RNDN);
        mpfr_cbrt(r42524, r42523, MPFR_RNDN);
        mpfr_sub(r42525, r42514, r42519, MPFR_RNDN);
        mpfr_cbrt(r42526, r42525, MPFR_RNDN);
        mpfr_div(r42527, r42524, r42526, MPFR_RNDN);
        mpfr_mul(r42528, r42521, r42527, MPFR_RNDN);
        mpfr_mul(r42529, r42528, r42528, MPFR_RNDN); mpfr_mul(r42529, r42529, r42528, MPFR_RNDN);
        mpfr_add(r42530, r42517, r42529, MPFR_RNDN);
        ;
        mpfr_set_si(r42532, mpfr_cmp(r42514, r42531) <= 0, MPFR_RNDN);
        mpfr_div(r42533, r42518, r42519, MPFR_RNDN);
        mpfr_mul(r42534, r42533, r42523, MPFR_RNDN);
        mpfr_sub(r42535, r42522, r42534, MPFR_RNDN);
        ;
        mpfr_set_si(r42537, mpfr_cmp(r42514, r42536) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r42539, mpfr_cmp(r42514, r42538) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r42541, mpfr_cmp(r42514, r42540) <= 0, MPFR_RNDN);
        mpfr_div(r42542, r42523, r42525, MPFR_RNDN);
        mpfr_mul(r42543, r42520, r42542, MPFR_RNDN);
        mpfr_add(r42544, r42517, r42543, MPFR_RNDN);
        if (mpfr_get_si(r42541, MPFR_RNDN)) { mpfr_set(r42545, r42544, MPFR_RNDN); } else { mpfr_set(r42545, r42544, MPFR_RNDN); };
        if (mpfr_get_si(r42539, MPFR_RNDN)) { mpfr_set(r42546, r42535, MPFR_RNDN); } else { mpfr_set(r42546, r42545, MPFR_RNDN); };
        if (mpfr_get_si(r42537, MPFR_RNDN)) { mpfr_set(r42547, r42530, MPFR_RNDN); } else { mpfr_set(r42547, r42546, MPFR_RNDN); };
        if (mpfr_get_si(r42532, MPFR_RNDN)) { mpfr_set(r42548, r42535, MPFR_RNDN); } else { mpfr_set(r42548, r42547, MPFR_RNDN); };
        if (mpfr_get_si(r42516, MPFR_RNDN)) { mpfr_set(r42549, r42530, MPFR_RNDN); } else { mpfr_set(r42549, r42548, MPFR_RNDN); };
        return mpfr_get_d(r42549, MPFR_RNDN);
}

