diff --git a/src/fft_kernelstring.cpp b/src/fft_kernelstring.cpp
index 85193321f6e9becb7d7b454494de2fec7f99c565..f14b0aab474dffa8a72411afa1cb17c701406c3c 100644
--- a/src/fft_kernelstring.cpp
+++ b/src/fft_kernelstring.cpp
@@ -984,6 +984,12 @@ getGlobalRadixInfo(int n, int *radix, int *R1, int *R2, int *numRadices)
 static void 
 insertSinCosCalcDirectNative(string & kernel_string, cl_fft_plan *plan, int num, int denom , string & expr, string & varRes) 
 {
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    const char format[] = "%a"; 
+#else
+    const char format[] = "%f";
+#endif
+
     if(denom & (denom-1)) {
         kernel_string += string("ang = dir*(2.0f*M_PI*") + num2str(num) + string("/") + num2str(denom) + string(")*("+expr+");\n");        
     } else {
@@ -1006,7 +1012,7 @@ insertSinCosCalcDirectNative(string & kernel_string, cl_fft_plan *plan, int num,
             default:     
                 float pi2=0x1.921fb54442d18p+2;
                 char tw[200];
-                sprintf(tw,"%a",pi2*num / (float) denom);
+                sprintf(tw,format,pi2*num / (float) denom);
                 kernel_string += string("ang = dir*(" + string(tw) + string(") * (")+expr+");\n"); 
                 break;
         }
@@ -1017,6 +1023,12 @@ insertSinCosCalcDirectNative(string & kernel_string, cl_fft_plan *plan, int num,
 static void
 insertSinCosCalcDirect(string & kernel_string, cl_fft_plan *plan, int num, int denom , string & expr, string & varRes)
 {
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    const char format[] = "%a";
+#else
+    const char format[] = "%f";
+#endif
+
   if(denom & (denom-1)) {
     kernel_string += string("ang = dir*(2.0f*M_PI*") + num2str(num) + string("/") + num2str(denom) + string(")*("+expr+");\n");
   } else {
@@ -1039,7 +1051,7 @@ insertSinCosCalcDirect(string & kernel_string, cl_fft_plan *plan, int num, int d
     default:
       float pi2=0x1.921fb54442d18p+2;
       char tw[200];
-      sprintf(tw,"%a",pi2*num / (float) denom);
+      sprintf(tw,format,pi2*num / (float) denom);
       kernel_string += string("ang = dir*(" + string(tw) + string(") * (")+expr+");\n");
       break;
     }
@@ -1094,6 +1106,14 @@ insertSinCosCalc(string & kernel_string, cl_fft_plan *plan, int num, int denom ,
 static void
 insertSinCosCalcTaylor3(string & kernel_string, cl_fft_plan *plan, int num, int denom , string & expr, string & varRes)
 {
+
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    const char format[] = "%a";
+#else
+    const char format[] = "%f";
+#endif
+
+
   if(denom & (denom-1)) {
     kernel_string += string("ang = dir*(2.0f*M_PI*") + num2str(num) + string("/") + num2str(denom) + string(")*("+expr+");\n");
     kernel_string += varRes+string(" = (float2)(native_cos(ang), native_sin(ang));\n");
@@ -1112,7 +1132,7 @@ insertSinCosCalcTaylor3(string & kernel_string, cl_fft_plan *plan, int num, int
         num >>=1;
       }
       // if normalized denom < grid size, pick directly from LUT. 
-      if(denom <= plan->N2) {
+      if((size_t) denom <= plan->N2) {
           kernel_string += string("{ int ang_index = (") + num2str(num) + string(" * ( ") + expr + string(")) & ") + num2str(denom -1)   + string("; \n");
           kernel_string += string("  int k = ang_index * ") + num2str(plan->N2 / denom ) + string(";\n");
           kernel_string += string("  float2 cs =cossin_T_LUT[k];\n");                     
@@ -1148,7 +1168,7 @@ insertSinCosCalcTaylor3(string & kernel_string, cl_fft_plan *plan, int num, int
           // precompute h0=2*pi/denom;
           float pi2=0x1.921fb54442d18p+2;
           char tw[200];
-          sprintf(tw,"%A",-pi2/(float) denom);
+          sprintf(tw,format,-pi2/(float) denom);
           kernel_string += string("  float mh=") +string(tw)+string("*(float)r;\n"); 
 
           // compute taylor series terms to order 3 and add them up, in "reverse" order (highest order first)