possible increase precision and avoid compiler warnings

This commit is contained in:
homm 2016-05-09 13:48:14 +02:00
parent f44a7f8b11
commit d3749ccc7c

View File

@ -7,11 +7,11 @@
struct filter { struct filter {
float (*filter)(float x); double (*filter)(double x);
float support; double support;
}; };
static inline float sinc_filter(float x) static inline double sinc_filter(double x)
{ {
if (x == 0.0) if (x == 0.0)
return 1.0; return 1.0;
@ -19,7 +19,7 @@ static inline float sinc_filter(float x)
return sin(x) / x; return sin(x) / x;
} }
static inline float lanczos_filter(float x) static inline double lanczos_filter(double x)
{ {
/* truncated sinc */ /* truncated sinc */
if (-3.0 <= x && x < 3.0) if (-3.0 <= x && x < 3.0)
@ -27,7 +27,7 @@ static inline float lanczos_filter(float x)
return 0.0; return 0.0;
} }
static inline float bilinear_filter(float x) static inline double bilinear_filter(double x)
{ {
if (x < 0.0) if (x < 0.0)
x = -x; x = -x;
@ -36,7 +36,7 @@ static inline float bilinear_filter(float x)
return 0.0; return 0.0;
} }
static inline float bicubic_filter(float x) static inline double bicubic_filter(double x)
{ {
/* https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm */ /* https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm */
#define a -0.5 #define a -0.5
@ -83,7 +83,7 @@ ImagingPrecompute(int inSize, int outSize, struct filter *filterp,
double *kk, *k; double *kk, *k;
/* prepare for horizontal stretch */ /* prepare for horizontal stretch */
filterscale = scale = (float) inSize / outSize; filterscale = scale = (double) inSize / outSize;
if (filterscale < 1.0) { if (filterscale < 1.0) {
filterscale = 1.0; filterscale = 1.0;
} }