Skip to content

Commit a2fb465

Browse files
committed
resolve name clashes with built-in math functions
See ModelicaTest.Fluid.Dissipation.TestCases.PressureLoss.SeveralTestCases
1 parent ed38335 commit a2fb465

File tree

1 file changed

+23
-118
lines changed

1 file changed

+23
-118
lines changed

Compiler/Template/CodegenCppCommon.tpl

Lines changed: 23 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,7 +1808,7 @@ template daeExpCall(Exp call, Context context, Text &preExp /*BUFP*/, Text &varD
18081808

18091809
case CALL(path=IDENT(name="abs"), expLst={e1}, attr=CALL_ATTR(ty = T_INTEGER(__))) then
18101810
let var1 = daeExp(e1, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
1811-
'labs(<%var1%>)'
1811+
'std::labs(<%var1%>)'
18121812

18131813
case CALL(path=IDENT(name="abs"), expLst={e1}) then
18141814
let var1 = daeExp(e1, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
@@ -1819,137 +1819,51 @@ template daeExpCall(Exp call, Context context, Text &preExp /*BUFP*/, Text &varD
18191819
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
18201820
let typeStr = expTypeShort(attr.ty )
18211821
let retVar = tempDecl(typeStr, &varDecls /*BUFD*/)
1822-
let &preExp += '<%retVar%> = sqrt(<%argStr%>);<%\n%>'
1822+
let &preExp += '<%retVar%> = std::sqrt(<%argStr%>);<%\n%>'
18231823
'<%retVar%>'
18241824

1825-
case CALL(path=IDENT(name="sin"),
1826-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1827-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1828-
let funName = '<%underscorePath(path)%>'
1829-
let retType = 'double'
1830-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1831-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1832-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1833-
1834-
case CALL(path=IDENT(name="sinh"),
1835-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1825+
// built-in mathematical functions
1826+
case CALL(path=IDENT(name="sin"), expLst={e1})
1827+
case CALL(path=IDENT(name="cos"), expLst={e1})
1828+
case CALL(path=IDENT(name="tan"), expLst={e1})
1829+
case CALL(path=IDENT(name="asin"), expLst={e1})
1830+
case CALL(path=IDENT(name="acos"), expLst={e1})
1831+
case CALL(path=IDENT(name="atan"), expLst={e1})
1832+
case CALL(path=IDENT(name="sinh"), expLst={e1})
1833+
case CALL(path=IDENT(name="cosh"), expLst={e1})
1834+
case CALL(path=IDENT(name="tanh"), expLst={e1})
1835+
case CALL(path=IDENT(name="exp"), expLst={e1})
1836+
case CALL(path=IDENT(name="log"), expLst={e1})
1837+
case CALL(path=IDENT(name="log10"), expLst={e1}) then
18361838
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
18371839
let funName = '<%underscorePath(path)%>'
1838-
let retType = 'double'
1839-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1840-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1841-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1842-
case CALL(path=IDENT(name="asin"),
1843-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1844-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1845-
let funName = '<%underscorePath(path)%>'
1846-
let retType = 'double'
1847-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1848-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1849-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1850-
case CALL(path=IDENT(name="cos"),
1851-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1852-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1853-
let funName = '<%underscorePath(path)%>'
1854-
let retType = 'double'
1855-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1856-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1857-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1858-
case CALL(path=IDENT(name="cosh"),
1859-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1860-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1861-
let funName = '<%underscorePath(path)%>'
1862-
let retType = 'double'
1863-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1864-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1865-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1866-
case CALL(path=IDENT(name="log"),
1867-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1868-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1869-
let funName = '<%underscorePath(path)%>'
1870-
let retType = 'double'
1871-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1872-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1873-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1874-
1875-
case CALL(path=IDENT(name="log10"),
1876-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1877-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1878-
let funName = '<%underscorePath(path)%>'
1879-
let retType = 'double'
1880-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1881-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1882-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1883-
1884-
1840+
'std::<%funName%>(<%argStr%>)'
18851841

1886-
case CALL(path=IDENT(name="acos"),
1887-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1888-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1889-
let funName = '<%underscorePath(path)%>'
1890-
let retType = 'double'
1891-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1892-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1893-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1894-
1895-
case CALL(path=IDENT(name="tan"),
1896-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1897-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1898-
let funName = '<%underscorePath(path)%>'
1899-
let retType = 'double'
1900-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1901-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1902-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1903-
1904-
case CALL(path=IDENT(name="tanh"),
1905-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1906-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1907-
let funName = '<%underscorePath(path)%>'
1908-
let retType = 'double'
1909-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1910-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1911-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1912-
1913-
case CALL(path=IDENT(name="atan"),
1914-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1915-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1916-
let funName = '<%underscorePath(path)%>'
1917-
let retType = 'double'
1918-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1919-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1920-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1921-
1922-
case CALL(path=IDENT(name="atan2"),
1842+
case CALL(path=IDENT(name="atan2"),
19231843
expLst={e1,e2},attr=attr as CALL_ATTR(__)) then
19241844
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
19251845

19261846
let retType = 'double'
19271847
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
19281848
let &preExp += '<%retVar%> = std::atan2(<%argStr%>);<%\n%>'
19291849
'<%retVar%>'
1930-
case CALL(path=IDENT(name="smooth"),
1850+
1851+
case CALL(path=IDENT(name="smooth"),
19311852
expLst={e1,e2},attr=attr as CALL_ATTR(__)) then
19321853
let var1 = daeExp(e1, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
19331854
let var2 = daeExp(e2, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
19341855
'<%var2%>'
1935-
case CALL(path=IDENT(name="homotopy"),
1856+
1857+
case CALL(path=IDENT(name="homotopy"),
19361858
expLst={e1,e2},attr=attr as CALL_ATTR(__)) then
19371859
let var1 = daeExp(e1, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
19381860
let var2 = daeExp(e2, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
19391861
'<%var1%>'
1940-
case CALL(path=IDENT(name="homotopyParameter"),
1862+
1863+
case CALL(path=IDENT(name="homotopyParameter"),
19411864
expLst={},attr=attr as CALL_ATTR(__)) then
19421865
'1.0'
19431866

1944-
case CALL(path=IDENT(name="exp"),
1945-
expLst={e1},attr=attr as CALL_ATTR(__)) then
1946-
let argStr = (expLst |> exp => '<%daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>' ;separator=", ")
1947-
let funName = '<%underscorePath(path)%>'
1948-
let retType = 'double'
1949-
let retVar = tempDecl(retType, &varDecls /*BUFD*/)
1950-
let &preExp += '<%retVar%> = <%daeExpCallBuiltinPrefix(attr.builtin)%><%funName%>(<%argStr%>);<%\n%>'
1951-
if attr.builtin then '<%retVar%>' else '<%retVar%>.<%retType%>_1'
1952-
19531867
case CALL(path=IDENT(name="div"), expLst={e1,e2}, attr=CALL_ATTR(ty = T_INTEGER(__))) then
19541868
let var1 = daeExp(e1, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
19551869
let var2 = daeExp(e2, context, &preExp, &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
@@ -2233,15 +2147,6 @@ template daeExpCallStart(Exp exp, Context context, Text &preExp /*BUFP*/,
22332147
error(sourceInfo(), 'Code generation does not support start(<%printExpStr(exp)%>)')
22342148
end daeExpCallStart;
22352149

2236-
template daeExpCallBuiltinPrefix(Boolean builtin)
2237-
"Helper to daeExpCall."
2238-
::=
2239-
match builtin
2240-
case true then ""
2241-
case false then "_"
2242-
end daeExpCallBuiltinPrefix;
2243-
2244-
22452150
template daeExpLunary(Exp exp, Context context, Text &preExp, Text &varDecls, SimCode simCode, Text& extraFuncs, Text& extraFuncsDecl,
22462151
Text extraFuncsNamespace, Text stateDerVectorName /*=__zDot*/, Boolean useFlatArrayNotation)
22472152
"Generates code for a logical unary expression."

0 commit comments

Comments
 (0)