# 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;