# HG changeset patch
# User laurent
# Date 1314980193 -7200
# Node ID 990ecb883731986647c08f363f87649f23284b38
# Parent  44ff2a6fcadca1f2e0c584b9e77e81abcd861413
Fix bugs in exponentiation

diff -r 44ff2a6fcadc -r 990ecb883731 absyntax_utils/search_type_code.c
--- a/absyntax_utils/search_type_code.c	Fri Sep 02 18:15:55 2011 +0200
+++ b/absyntax_utils/search_type_code.c	Fri Sep 02 18:16:33 2011 +0200
@@ -14570,7 +14570,7 @@
                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
                     {
                 
-                        symbol_c * return_type_symbol = last_type_symbol;
+                        symbol_c * return_type_symbol = IN1_type_symbol;
                         return return_type_symbol;
                         
                     }
@@ -27692,7 +27692,7 @@
                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
                     {
                 
-                        symbol_c * return_type_symbol = last_type_symbol;
+                        symbol_c * return_type_symbol = IN1_type_symbol;
                         return return_type_symbol;
                         
                     }
diff -r 44ff2a6fcadc -r 990ecb883731 lib/iec_std_lib.h
--- a/lib/iec_std_lib.h	Fri Sep 02 18:15:55 2011 +0200
+++ b/lib/iec_std_lib.h	Fri Sep 02 18:16:33 2011 +0200
@@ -1089,10 +1089,11 @@
   /*    EXPT    */
   /**************/
 #define __expt_(TYPENAME)\
-static inline TYPENAME __expt_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN1, REAL IN2){\
+static inline TYPENAME __expt_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN1, LREAL IN2){\
   TEST_EN(TYPENAME)\
   return pow(IN1, IN2);\
-}ANY_REAL(__expt_)
+}
+ANY_REAL(__expt_)
 
 /**************/
 /* Selection  */
diff -r 44ff2a6fcadc -r 990ecb883731 stage4/generate_c/il_code_gen.c
--- a/stage4/generate_c/il_code_gen.c	Fri Sep 02 18:15:55 2011 +0200
+++ b/stage4/generate_c/il_code_gen.c	Fri Sep 02 18:16:33 2011 +0200
@@ -14947,7 +14947,7 @@
                         if (IN2_type_symbol == NULL)
                           IN2_type_symbol = last_type_symbol;
                         ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
-                        symbol_c * return_type_symbol = last_type_symbol;
+                        symbol_c * return_type_symbol = IN1_type_symbol;
                         function_type_suffix = IN1_type_symbol;
                         break;
                         
diff -r 44ff2a6fcadc -r 990ecb883731 stage4/generate_c/st_code_gen.c
--- a/stage4/generate_c/st_code_gen.c	Fri Sep 02 18:15:55 2011 +0200
+++ b/stage4/generate_c/st_code_gen.c	Fri Sep 02 18:16:33 2011 +0200
@@ -17299,7 +17299,7 @@
                         if (IN2_type_symbol == NULL)
                           IN2_type_symbol = last_type_symbol;
                         ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
-                        symbol_c * return_type_symbol = last_type_symbol;
+                        symbol_c * return_type_symbol = IN1_type_symbol;
                         function_type_suffix = IN1_type_symbol;
                         break;