X-Git-Url: https://git.sesse.net/?p=c64tapwav;a=blobdiff_plain;f=interpolate.h;h=c71110b37d71950c9b02b47950ff8d7c1d93bcac;hp=55bc61cc3ca146147e0ba31b68c303e8b387493f;hb=63deff31a441647619080ca046d1aa1c8edcea9e;hpb=08089f496815d725c3bee171bae0e884642ffc05 diff --git a/interpolate.h b/interpolate.h index 55bc61c..c71110b 100644 --- a/interpolate.h +++ b/interpolate.h @@ -26,13 +26,13 @@ inline double lanczos_weight(double x) return sinc(M_PI * x) * sinc(M_PI * x / LANCZOS_RADIUS); } -extern double lanczos_table[(LANCZOS_RADIUS * 2) * LANCZOS_RESOLUTION]; +extern double lanczos_table[LANCZOS_RADIUS * LANCZOS_RESOLUTION]; void make_lanczos_weight_table(); -inline double lanczos_weight_table(double x) +inline double lanczos_weight_table(float x) { - int table_id = lrintf((x + LANCZOS_RADIUS) * LANCZOS_RESOLUTION); - if (table_id < 0 || table_id >= (LANCZOS_RADIUS * 2) * LANCZOS_RESOLUTION) { + int table_id = lrintf(fabsf(x) * LANCZOS_RESOLUTION); + if (table_id >= LANCZOS_RADIUS * LANCZOS_RESOLUTION) { return 0.0; } return lanczos_table[table_id];