Skip to content

Commit 5ba4571

Browse files
authored
Merge pull request #2023 from ibpsa/issue2022_polynomial
Replaced implementation with Horner's method
2 parents 1689d9e + e7612b9 commit 5ba4571

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
last-generated=2024-08-04
1+
last-generated=2025-06-05
22
statistics-simulation=
33
{
44
"linear": "0",
@@ -7,5 +7,5 @@ statistics-simulation=
77
"numerical Jacobians": "0"
88
}
99
time=[0e+00, 3.1536e+07]
10-
EHea.y=[0e+00, 2.383018848e+08, 4.221339072e+08, 4.78405376e+08, 5.86004992e+08, 6.90841088e+08, 6.98283904e+08, 7.22994816e+08, 9.166749952e+08, 1.082319616e+09, 1.209271168e+09, 1.5483324416e+09, 1.693135232e+09, 1.7223225088e+09, 1.7629427456e+09, 2.07210112e+09, 2.1643523584e+09, 2.273836544e+09, 2.337353984e+09, 2.355152896e+09, 2.365914112e+09, 2.592748032e+09, 2.5952462848e+09, 2.602690048e+09, 2.6088948224e+09, 2.743942912e+09, 3.047777792e+09, 3.057582592e+09, 3.071378432e+09, 3.2590921728e+09, 3.3548864e+09, 3.5173076992e+09, 3.669135872e+09, 3.7874588672e+09, 3.851754752e+09, 3.887730688e+09, 3.887730688e+09, 3.887730688e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.888311296e+09, 3.889059072e+09, 3.889059072e+09, 4.155971584e+09, 4.162304256e+09, 4.162304256e+09, 4.162304256e+09, 4.194943232e+09, 4.219370752e+09, 4.22329856e+09, 4.6225917952e+09, 4.851689984e+09, 4.877319168e+09, 4.9877376e+09, 5.069398016e+09, 5.070836224e+09, 5.218079744e+09, 5.395037696e+09, 5.397714944e+09, 5.5101218816e+09, 5.8676026368e+09, 6.0395008e+09, 6.1390450688e+09, 6.173139456e+09, 6.248160256e+09, 6.2929404928e+09, 6.5979392e+09]
11-
ECoo.y=[0e+00, 0e+00, -5.1298703125e+05, -2.76956225e+06, -6.0662603e+06, -1.298194e+07, -8.2954032e+07, -8.9679264e+07, -8.9679264e+07, -8.9679264e+07, -8.9693904e+07, -8.9693904e+07, -9.074072e+07, -9.5044432e+07, -9.5972904e+07, -9.5975896e+07, -9.5975896e+07, -9.6343848e+07, -1.06000448e+08, -1.40782752e+08, -1.75470224e+08, -1.781402816e+08, -2.08602912e+08, -2.43947312e+08, -2.55856336e+08, -2.59549744e+08, -2.59549744e+08, -2.929661056e+08, -2.98546464e+08, -2.98546464e+08, -3.0674336e+08, -3.10933536e+08, -3.10933536e+08, -3.10933536e+08, -3.10933536e+08, -3.19317152e+08, -4.581921728e+08, -5.38119872e+08, -5.699190912e+08, -6.32462784e+08, -6.47055936e+08, -6.945232128e+08, -7.66179776e+08, -9.47331584e+08, -1.0788900352e+09, -1.27024896e+09, -1.4713868288e+09, -1.5941359104e+09, -1.720927872e+09, -2.0104454912e+09, -2.230972928e+09, -2.437711616e+09, -2.6324158976e+09, -2.7453682176e+09, -2.9689654784e+09, -3.19380736e+09, -3.26782848e+09, -3.3042138624e+09, -3.5419851776e+09, -3.7390583808e+09, -4.057358848e+09, -4.1703497728e+09, -4.325511168e+09, -4.4963884032e+09, -4.756503552e+09, -4.96805888e+09, -5.2866848768e+09, -5.4596105216e+09, -5.7958774784e+09, -6.0641256448e+09, -6.359660032e+09, -6.473903616e+09, -6.7370486784e+09, -6.875244032e+09, -7.0224585728e+09, -7.139704832e+09, -7.295077376e+09, -7.295077376e+09, -7.4610637824e+09, -7.550819328e+09, -7.75166208e+09, -7.864577024e+09, -7.91982336e+09, -7.955896832e+09, -7.955896832e+09, -7.965299712e+09, -7.965299712e+09, -7.965299712e+09, -7.968044544e+09, -8.0399104e+09, -8.07433472e+09, -8.080773632e+09, -8.153579008e+09, -8.169867264e+09, -8.169867264e+09, -8.169867264e+09, -8.169867264e+09, -8.180353536e+09, -8.208816128e+09, -8.219777024e+09, -8.223968768e+09]
10+
EHea.y=[0e+00, 2.383074976e+08, 4.221480576e+08, 4.78424512e+08, 5.86036352e+08, 6.90877888e+08, 6.98324864e+08, 7.23036928e+08, 9.167010816e+08, 1.08236352e+09, 1.209303808e+09, 1.548347392e+09, 1.693105024e+09, 1.722304768e+09, 1.7629342464e+09, 2.072130048e+09, 2.1644278272e+09, 2.273894656e+09, 2.33743744e+09, 2.35523712e+09, 2.366019584e+09, 2.592891136e+09, 2.5953880576e+09, 2.602839296e+09, 2.6090393088e+09, 2.74406272e+09, 3.047909888e+09, 3.057709312e+09, 3.071529728e+09, 3.2593122304e+09, 3.355096064e+09, 3.5175386624e+09, 3.669395456e+09, 3.7877040128e+09, 3.85199488e+09, 3.887973888e+09, 3.887973888e+09, 3.887973888e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88855936e+09, 3.88930432e+09, 3.88930432e+09, 4.156236288e+09, 4.162576896e+09, 4.162576896e+09, 4.162576896e+09, 4.195214848e+09, 4.219643392e+09, 4.22356992e+09, 4.6229413888e+09, 4.852006912e+09, 4.8776071168e+09, 4.988002816e+09, 5.069607936e+09, 5.071040512e+09, 5.218279424e+09, 5.395287552e+09, 5.397968384e+09, 5.5104217088e+09, 5.867941376e+09, 6.039885824e+09, 6.1394639872e+09, 6.17350656e+09, 6.248530432e+09, 6.2933322752e+09, 6.598467584e+09]
11+
ECoo.y=[0e+00, 0e+00, -5.124189375e+05, -2.7687135e+06, -6.0647479e+06, -1.2978923e+07, -8.2941008e+07, -8.9666072e+07, -8.9666072e+07, -8.9666072e+07, -8.9681104e+07, -8.9681104e+07, -9.0726392e+07, -9.5027392e+07, -9.5955296e+07, -9.595792e+07, -9.595792e+07, -9.6326384e+07, -1.05986168e+08, -1.4078088e+08, -1.7547584e+08, -1.781474432e+08, -2.08612128e+08, -2.43951136e+08, -2.55863776e+08, -2.5955928e+08, -2.5955928e+08, -2.92976896e+08, -2.98552288e+08, -2.98552288e+08, -3.06739904e+08, -3.1092432e+08, -3.1092432e+08, -3.1092432e+08, -3.1092432e+08, -3.19307456e+08, -4.581766464e+08, -5.3809696e+08, -5.698858112e+08, -6.32435648e+08, -6.47025984e+08, -6.944977408e+08, -7.6615008e+08, -9.472755712e+08, -1.0787997952e+09, -1.270143232e+09, -1.471306752e+09, -1.5940589568e+09, -1.7208999168e+09, -2.0103515392e+09, -2.230815232e+09, -2.4374510592e+09, -2.6321458688e+09, -2.7451104768e+09, -2.968773632e+09, -3.193650176e+09, -3.267659776e+09, -3.3040525824e+09, -3.5419638272e+09, -3.7390436864e+09, -4.057323008e+09, -4.170377472e+09, -4.325518336e+09, -4.49637632e+09, -4.7565920256e+09, -4.96826624e+09, -5.28690688e+09, -5.4598150144e+09, -5.795985408e+09, -6.0641982464e+09, -6.359791616e+09, -6.474058752e+09, -6.7372136448e+09, -6.875324416e+09, -7.0225703936e+09, -7.13981952e+09, -7.29520896e+09, -7.29520896e+09, -7.461193728e+09, -7.550965248e+09, -7.751807488e+09, -7.864694784e+09, -7.919932928e+09, -7.956013568e+09, -7.956013568e+09, -7.965409792e+09, -7.965409792e+09, -7.965409792e+09, -7.968163328e+09, -8.0400417792e+09, -8.07444224e+09, -8.080873472e+09, -8.1536631808e+09, -8.169899008e+09, -8.169899008e+09, -8.169899008e+09, -8.169899008e+09, -8.180386304e+09, -8.208848896e+09, -8.219796992e+09, -8.224001536e+09]

IBPSA/Utilities/Math/Functions/polynomial.mo

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@ function polynomial "Polynomial function"
44
input Real x "Independent variable";
55
input Real a[:] "Coefficients";
66
output Real y "Result";
7-
protected
8-
parameter Integer n = size(a, 1)-1;
9-
Real xp[n+1] "Powers of x";
107
algorithm
11-
xp[1] :=1;
12-
for i in 1:n loop
13-
xp[i+1] :=xp[i]*x;
8+
y := 0;
9+
for i in size(a, 1):-1:1 loop
10+
y := y*x + a[i];
1411
end for;
15-
y :=a*xp;
1612
annotation (Documentation(info="<html>
1713
This function computes a polynomial of arbitrary order.
1814
The polynomial has the form
@@ -23,10 +19,17 @@ The polynomial has the form
2319
revisions="<html>
2420
<ul>
2521
<li>
22+
June 3, 2025, by Michael Wetter:<br/>
23+
Updated implementation using Horner's method.<br/>
24+
Removed derivative annotation.<br/>
25+
This is for
26+
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/2022\">IBPSA, issue 2022</a>.
27+
</li>
28+
<li>
2629
December 14, 2016, by Michael Wetter:<br/>
2730
Removed derivative annotation.<br/>
2831
This is for
29-
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/602\">issue 602</a>.
32+
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/602\">IBPSA, issue 602</a>.
3033
</li>
3134
<li>
3235
March 30, 2011, by Michael Wetter:<br/>

0 commit comments

Comments
 (0)