Skip to content

Commit 99105fc

Browse files
author
Willi Braun
committed
- added an assert to real_int_pow
- adjust tests git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@20602 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 5043b8c commit 99105fc

File tree

3 files changed

+5
-4
lines changed

3 files changed

+5
-4
lines changed

Compiler/Template/CodegenC.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8121,7 +8121,7 @@ case BINARY(__) then
81218121
let &preExp += '<%tmp%> = <%e1%>;<%\n%>'
81228122
let &preExp += '<%tmp%> *= <%tmp%>;<%\n%>'
81238123
'(<%tmp%> * <%tmp%>)'
8124-
case SOME(i) then 'real_int_pow(<%e1%>, <%i%>)'
8124+
case SOME(i) then 'real_int_pow(threadData, <%e1%>, <%i%>)'
81258125
else 'pow(<%e1%>, <%e2%>)'
81268126
case UMINUS(__) then daeExpUnary(exp, context, &preExp, &varDecls)
81278127
case ADD_ARR(__) then

SimulationRuntime/c/util/utility.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,14 @@
3636
#include <regex.h>
3737
#include <string.h>
3838

39-
modelica_real real_int_pow(modelica_real base, modelica_integer n)
39+
modelica_real real_int_pow(threadData_t *threadData, modelica_real base, modelica_integer n)
4040
{
4141
modelica_real result = 1.0;
4242
modelica_integer m = n < 0;
43+
FILE_INFO info = omc_dummyFileInfo;
4344
if(m) {
4445
if(base == 0.0)
45-
errorStreamPrint(LOG_STDOUT, 0, "evaluation problem for 0^%i ",n);
46+
omc_assert(threadData, info, "evaluation problem for 0^%i ", n);
4647
n = -n;
4748
}
4849
while(n != 0) {

SimulationRuntime/c/util/utility.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ static inline modelica_real modelica_real_max(modelica_real x,modelica_real y)
129129
#define reduction_product(X,Y) ((X)*(Y))
130130

131131
/* pow(), but for integer exponents (faster implementation) */
132-
extern modelica_real real_int_pow(modelica_real base,modelica_integer n);
132+
extern modelica_real real_int_pow(threadData_t *threadData, modelica_real base,modelica_integer n);
133133
/* Returns 0 on failure. The first element in nmatches contains the error-message. */
134134
extern int OpenModelica_regexImpl(const char* str, const char* re, const int maxn, int extended, int sensitive, void*(*)(const char*), void **result);
135135
/* Wrapper for the builtin call */

0 commit comments

Comments
 (0)