diff options
Diffstat (limited to '')
| -rw-r--r-- | common.h | 1 | ||||
| -rw-r--r-- | libglitter_redistribute_energy_double.c | 25 | 
2 files changed, 24 insertions, 2 deletions
| @@ -55,6 +55,7 @@ struct libglitter_render_context {  # pragma GCC diagnostic ignored "-Wdouble-promotion"  #elif defined(__clang__)  # pragma clang diagnostic ignored "-Wfloat-equal" +# pragma clang diagnostic ignored "-Wfloat-conversion"  # pragma clang diagnostic ignored "-Wdouble-promotion"  # pragma clang diagnostic ignored "-Wimplicit-float-conversion"  #endif diff --git a/libglitter_redistribute_energy_double.c b/libglitter_redistribute_energy_double.c index 6b57c0e..24d6c4a 100644 --- a/libglitter_redistribute_energy_double.c +++ b/libglitter_redistribute_energy_double.c @@ -3,12 +3,33 @@  #ifndef TEST +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wfloat-equal" +#elif defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wfloat-equal" +#endif + +static int +exactly(double a, double b) +{ +	return a == b; +} + +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic pop +#elif defined(__clang__) +# pragma clang diagnostic pop +#endif + +  static void  vconvolute(double *restrict raster, size_t rowsize, size_t width, size_t height, size_t kernelsize, const double *kernel)  {  	size_t y, x, i; -	if (kernelsize == 3 && kernel[0] == kernel[1] && kernel[1] == kernel[2]) { +	if (kernelsize == 3 && exactly(kernel[0], kernel[1]) && exactly(kernel[1], kernel[2])) {  		for (y = 0; y < height; y++) {  			for (x = 0; x < width; x++)  				raster[x] += raster[x + 1 * rowsize]; @@ -50,7 +71,7 @@ hconvolute(double *restrict raster, size_t rowsize, size_t width, size_t height,  {  	size_t y, x, i; -	if (kernelsize == 3 && kernel[0] == kernel[1] && kernel[1] == kernel[2]) { +	if (kernelsize == 3 && exactly(kernel[0], kernel[1]) && exactly(kernel[1], kernel[2])) {  		for (y = 0; y < height; y++) {  			for (x = 0; x < width; x++) {  				raster[x + 1] += raster[x + 2]; | 
