From a04104cb19c1322a3cf0bb11c0ce2988ed5a8b1f Mon Sep 17 00:00:00 2001
From: Heinz-Bernd Eggenstein <heinz-bernd.eggenstein@aei.mpg.de>
Date: Fri, 13 Jul 2012 16:03:14 +0200
Subject: [PATCH] Bug #1649: wrong results for transform lengths > 2^24

Prevent integer overruns for long transforms in Taylor approx of sin cos.
Still to do: check all uses of mad24 etc in generated code where overruns could occur as well
---
 src/fft_kernelstring.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/fft_kernelstring.cpp b/src/fft_kernelstring.cpp
index 4f21738..1577c18 100644
--- a/src/fft_kernelstring.cpp
+++ b/src/fft_kernelstring.cpp
@@ -1120,7 +1120,7 @@ insertSinCosCalcTaylor3(string & kernel_string, cl_fft_plan *plan, int num, int
               logDenom++;
           }
           
-          kernel_string += string(" int k = (ang_index << ") + num2str(plan->logN2) + string(" + ") + num2str(denom / 2) + string(") >> ") + num2str(logDenom) + string(";\n");    
+          kernel_string += string(" int k = (ang_index +  ") + num2str( 1 <<(logDenom - plan->logN2 -1) ) + string(") >> ") + num2str(logDenom - plan->logN2) +string( ";\n");    
           
 	      // get cos/sin of grid point from LUT                                                                                                                                                                            
 
-- 
GitLab