Skip to content

Commit c8c715e

Browse files
committed
Fixed tests.
Added icons. fixed #3
1 parent af10b34 commit c8c715e

File tree

12 files changed

+235
-60
lines changed

12 files changed

+235
-60
lines changed

MathFunctions.GUI/MathFunctions.GUI.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
<ErrorReport>prompt</ErrorReport>
3434
<WarningLevel>4</WarningLevel>
3535
</PropertyGroup>
36+
<PropertyGroup>
37+
<ApplicationIcon>icon_big.ico</ApplicationIcon>
38+
</PropertyGroup>
3639
<ItemGroup>
3740
<Reference Include="GOLD Engine, Version=5.0.4337.25397, Culture=neutral, processorArchitecture=MSIL">
3841
<HintPath>..\Dependencies\GOLD Engine.dll</HintPath>
@@ -90,6 +93,9 @@
9093
<Name>MathFunctions</Name>
9194
</ProjectReference>
9295
</ItemGroup>
96+
<ItemGroup>
97+
<Content Include="icon_big.ico" />
98+
</ItemGroup>
9399
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
94100
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
95101
Other similar extension points exist, see Microsoft.Common.targets.

MathFunctions.GUI/frmMain.Designer.cs

Lines changed: 51 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

MathFunctions.GUI/frmMain.resx

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,112 @@ round(f(x))' = 0;</value>
146146
<metadata name="clnDescription.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
147147
<value>True</value>
148148
</metadata>
149+
<metadata name="clnPos.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
150+
<value>True</value>
151+
</metadata>
152+
<metadata name="clnDescription.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
153+
<value>True</value>
154+
</metadata>
149155
<metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
150156
<value>17, 17</value>
151157
</metadata>
152158
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
153-
<value>69</value>
159+
<value>61</value>
154160
</metadata>
161+
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
162+
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
163+
<value>
164+
AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE
165+
AAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
166+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
167+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
168+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/ycnJ/9HR0f/g4OD/3t7e/7y8vP/g4OD/4ODg/87O
169+
zv/Nzc3/4ODg/+Dg4P/b29v/v7+//+Dg4P/g4OD/4ODg/3Nzc/9xcXH/4ODg/97e3v8XFxf/z8/P/+Dg
170+
4P+Pj4//VVVV/+Dg4P/g4OD/19fX/xISEv/b29v/4ODg/+Dg4P+jo6P/QUFB/+Dg4P/g4OD/QkJC/6Ki
171+
ov/g4OD/v7+//yYmJv/g4OD/4ODg/+Dg4P8uLi7/t7e3/+Dg4P/g4OD/0NDQ/xUVFf/e3t7/4ODg/3Jy
172+
cv9zc3P/4ODg/9/f3/8SEhL/1NTU/+Dg4P/g4OD/XV1d/4eHh//g4OD/4ODg/+Dg4P8hISH/wcHB/+Dg
173+
4P+ioqL/QkJC/+Dg4P/g4OD/Pz8//6enp//g4OD/4ODg/42Njf9XV1f/4ODg/+Dg4P/g4OD/UVFR/1pa
174+
Wv/f39//u7u7/wYGBv+0tLT/4ODg/1paWv9/f3//4ODg/+Dg4P+9vb3/KCgo/+Dg4P/g4OD/4ODg/4WF
175+
hf9ERET/PDw8/xsbG/9FRUX/W1tb/zg4OP8MDAz/ioqK/5+fn//g4OD/W1tb/wQEBP8wMDD/19fX/+Dg
176+
4P/f39//39/f/9zc3P/Kysr/3t7e/+Dg4P/S0tL/09PT/9zc3P9PT0//4ODg/9/f3/87Ozv/p6en/9/f
177+
3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/Tk5O/7y8vP/g4OD/iIiI/zIy
178+
Mv+mpqb/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/4qKiv9fX1//4ODg/9/f
179+
3/+vr6//tbW1/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/IyMj/Gxsb/97e
180+
3v/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9fX
181+
1//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
182+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
183+
//8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA
184+
AAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
185+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
186+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
187+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
188+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
189+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
190+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
191+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
192+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
193+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
194+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
195+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
196+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
197+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
198+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
199+
4P/Q0ND/lJSU/6enp//g4OD/4ODg/+Dg4P/g4OD/2NjY/5WVlf+dnZ3/4ODg/+Dg4P/g4OD/4ODg/97e
200+
3v+ampr/mZmZ/9zc3P/g4OD/4ODg/+Dg4P/g4OD/4ODg/83Nzf+UlJT/q6ur/+Dg4P/g4OD/4ODg/+Dg
201+
4P/g4OD/4ODg/8rKyv8FBQX/Gxsb/9/f3//g4OD/4ODg/+Dg4P/Z2dn/FBQU/wsLC//S0tL/4ODg/+Dg
202+
4P/g4OD/4ODg/ycnJ/8CAgL/wcHB/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/w8PD/wMDA/8lJSX/4ODg/+Dg
203+
4P/g4OD/4ODg/+Dg4P/g4OD/3t7e/yIiIv8EBAT/xsbG/+Dg4P/g4OD/4ODg/+Dg4P89PT3/AAAA/6ys
204+
rP/g4OD/4ODg/+Dg4P/g4OD/V1dX/wAAAP+UlJT/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/c3Nz/Ghoa/wcH
205+
B//Nzc3/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/Tk5O/wAAAP+ampr/4ODg/+Dg4P/g4OD/4ODg/21t
206+
bf8AAAD/fX19/+Dg4P/g4OD/4ODg/+Dg4P+Hh4f/AAAA/2VlZf/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
207+
4P9ERET/AAAA/6ampv/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P9+fn7/AAAA/2pqav/g4OD/4ODg/+Dg
208+
4P/g4OD/nZ2d/wAAAP9NTU3/4ODg/+Dg4P/g4OD/4ODg/7e3t/8AAAD/NTU1/+Dg4P/g4OD/4ODg/+Dg
209+
4P/g4OD/4ODg/3V1df8AAAD/dnZ2/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/62trf8AAAD/Ozs7/+Dg
210+
4P/g4OD/4ODg/+Dg4P/Kysr/AgIC/yAgIP/e3t7/4ODg/+Dg4P/g4OD/3d3d/wkJCf8MDAz/2tra/+Dg
211+
4P/g4OD/4ODg/+Dg4P/g4OD/pKSk/wAAAP9GRkb/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/1tbW/wcH
212+
B/8SEhL/2dnZ/+Dg4P/g4OD/4ODg/+Dg4P8cHBz/AgIC/8zMzP/g4OD/4ODg/+Dg4P/g4OD/NjY2/wAA
213+
AP+3t7f/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/R0dH/AgIC/xsbG//d3d3/4ODg/+Dg4P/g4OD/4ODg/+Dg
214+
4P/g4OD/LCws/wAAAP+7u7v/4ODg/+Dg4P/g4OD/4ODg/01NTf8AAAD/np6e/+Dg4P/g4OD/4ODg/+Dg
215+
4P9mZmb/AAAA/4aGhv/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8jIyP/AAAA/8fHx//g4OD/4ODg/+Dg
216+
4P/g4OD/4ODg/+Dg4P9bW1v/AAAA/4qKiv/g4OD/4ODg/+Dg4P/g4OD/fHx8/wAAAP9sbGz/4ODg/+Dg
217+
4P/g4OD/4ODg/5aWlv8AAAD/WFhY/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/1JSUv8AAAD/mJiY/+Dg
218+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/4uLi/8AAAD/Ly8v/9zc3P/g4OD/4ODg/+Dg4P+jo6P/AAAA/xsb
219+
G//U1NT/4ODg/+Dg4P/g4OD/xMTE/wAAAP8rKyv/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/goKC/wAA
220+
AP9oaGj/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/urq6/wAAAP8AAAD/Xl5e/9zc3P/g4OD/4ODg/4qK
221+
iv8AAAD/AAAA/0pKSv/V1dX/4ODg/+Dg4P+lpaX/AAAA/xQUFP/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
222+
4P+ysrL/AAAA/zk5Of/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/Y2Nj/EhIS/w4ODv8eHh7/KCgo/29v
223+
b/9hYWH/CwsL/wAAAP83Nzf/IiIi/xwcHP9nZ2f/bW1t/xUVFf8AAAD/Pz8//5OTk/+UlJT/4ODg/+Dg
224+
4P/g4OD/hISE/0BAQP8BAQH/CAgI/0VFRf9KSkr/3Nzc/+Dg4P/g4OD/4ODg/+Dg4P9LS0v/IyMj/8LC
225+
wv9TU1P/CAgI/wAAAP8AAAD/ISEh/7+/v//Q0ND/Xl5e/wwMDP8AAAD/AAAA/xsbG/+6urr/nZ2d/yws
226+
LP/f39//4ODg/+Dg4P+Li4v/HR0d/wkJCf8AAAD/FRUV/x4eHv/BwcH/4ODg/+Dg4P/g4OD/4ODg/97e
227+
3v/d3d3/4ODg/+Dg4P/Q0ND/srKy/7e3t//a2tr/4ODg/+Dg4P/g4OD/1NTU/7S0tP+1tbX/2NjY/+Dg
228+
4P/T09P/DAwM/6urq//g4OD/4ODg/9/f3//d3d3/XV1d/wAAAP+JiYn/3d3d/9/f3//g4OD/4ODg/+Dg
229+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
230+
4P/g4OD/4ODg/+Dg4P87Ozv/TExM/+Dg4P/g4OD/4ODg/+Dg4P+Pj4//AAAA/1dXV//g4OD/4ODg/+Dg
231+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
232+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/3p6ev8ICAj/xsbG/+Dg4P/g4OD/4ODg/8fHx/8GBgb/ERER/7W1
233+
tf/d3d3/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
234+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/uLi4/wAAAP9tbW3/4ODg/+Dg4P/g4OD/4ODg/3Nz
235+
c/8CAgL/AAAA/wsLC//S0tL/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
236+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/c3Nz/Ghoa/xYWFv/a2tr/4ODg/+Dg
237+
4P/g4OD/39/f/6Ghof9bW1v/TExM/8jIyP/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
238+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P9VVVX/AAAA/4+P
239+
j//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
240+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/5SU
241+
lP8AAAD/NDQ0/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
242+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
243+
4P/g4OD/zs7O/xISEv8nJyf/3Nzc/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
244+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
245+
4P/g4OD/4ODg/+Dg4P/g4OD/y8vL/9PT0//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
246+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
247+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
248+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
249+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
250+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
251+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
252+
4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
253+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
254+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
255+
</value>
256+
</data>
155257
</root>

MathFunctions.GUI/icon_big.ico

97.3 KB
Binary file not shown.

MathFunctions.GUI/icon_small.ico

5.3 KB
Binary file not shown.

MathFunctions.Tests/MathFuncCompilationTests.cs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,7 @@ public void Init()
1919
}
2020

2121
[Test]
22-
public void TestFunc(double x)
23-
{
24-
//return Math.Pow((2 * -x + 1), (2 * x + 1)) * Math.Sin((2 * x + 1) * (2 * x + 1) * (2 * x + 1));
25-
}
26-
27-
[Test]
28-
public void CompileFuncTest1()
22+
public void CompileFunc()
2923
{
3024
var expectedFunc = new Func<double, double>(x => Math.Sin(x) + Math.Pow(x, Math.Log(5 * x) - 10 / x));
3125
using (var mathAssembly = new MathAssembly("Sin(x) + x ^ (Ln(5 * x) - 10 / x)", "x"))
@@ -34,5 +28,29 @@ public void CompileFuncTest1()
3428
Assert.AreEqual(expectedFunc(i), mathAssembly.SimpleFunc(i));
3529
}
3630
}
31+
32+
[Test]
33+
public void CompileFuncWithParameter()
34+
{
35+
var expectedFunc = new Func<double, double, double, double>((x, a, b) =>
36+
Math.Cos(x * b) * b - Math.Log(a) / Math.Pow(Math.Log(x), 2) / x); // derivative of log(x, a) + sin(x * b)
37+
using (var mathAssembly = new MathAssembly(new MathFunc("log(x, a) + sin(x * b)", "x").GetDerivative().ToString(), "x"))
38+
{
39+
Assert.AreEqual(expectedFunc(5, 3, 4), mathAssembly.Func.Invoke(null, new object[] { 5, 3, 4 }));
40+
}
41+
}
42+
43+
[Test]
44+
public void CompileFuncWithUnknownFunc()
45+
{
46+
double delta = 0.000001;
47+
var expectedFunc = new Func<double, Func<double, double>, double>((x, f) =>
48+
Math.Cos(f(x)) * (f(x + delta) - f(x)) / delta); // derivative of sin(f(x))
49+
using (var mathAssembly = new MathAssembly("sin(a(x))", "x"))
50+
{
51+
var func = new Func<double, double>(x => x * x);
52+
Assert.AreEqual(expectedFunc(5, func), mathAssembly.FuncDerivative.Invoke(null, new object[] { 5, func }));
53+
}
54+
}
3755
}
3856
}

MathFunctions.Tests/MathFuncDerivativeTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public void Derivative5()
101101
[Test]
102102
public void Derivative6()
103103
{
104-
string expression = "arctan(sqrt(x)) * ln(x)";
104+
string expression = "atan(sqrt(x)) * ln(x)";
105105
Assert.IsTrue(WolframAlphaUtils.CheckDerivative(expression, GetDerivativeExpression(expression)));
106106
}
107107

MathFunctions.Tests/WolframAlphaUtils.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public static class WolframAlphaUtils
1414
public static bool CheckDerivative(string expression, string derivative)
1515
{
1616
return CheckEquality("diff(" + expression + ")", derivative);
17-
//return CheckDerivative2(expression, derivative);
1817
}
1918

2019
public static bool CheckEquality(string expression1, string expression2)

MathFunctions/KnownFunc.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public class KnownFunc
5454
{ "^", KnownFuncType.Exp},
5555
{ "exp", KnownFuncType.Exp},
5656

57-
{ "log", KnownFuncType.Log},
58-
{ "diff", KnownFuncType.Diff}
57+
{ "log", KnownFuncType.Log },
58+
{ "diff", KnownFuncType.Diff }
5959
};
6060

6161
public static List<KnownFuncType> SpecFuncs = new List<KnownFuncType>()

MathFunctions/MathAssembly.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ namespace MathFunctions
99
{
1010
public class MathAssembly : IDisposable
1111
{
12+
private static string _chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
13+
private static Random _rand = new Random();
14+
1215
private AppDomain _domain;
1316
private string _fileName = "MathFuncLib.dll";
1417
private object _mathFuncObj;
@@ -38,6 +41,7 @@ public double SimpleFuncDerivative(double x)
3841
public MathAssembly(string expression, string variable)
3942
{
4043
var mathAssembly = new MathFuncAssemblyCecil();
44+
_fileName = "MathFuncLib" + "_" + GenerateRandomString(6) + ".dll";
4145
mathAssembly.CompileFuncAndDerivative(expression, variable, "", _fileName);
4246
_domain = AppDomain.CreateDomain("MathFuncDomain");
4347
_mathFuncObj = _domain.CreateInstanceFromAndUnwrap(_fileName, mathAssembly.NamespaceName + "." + mathAssembly.ClassName);
@@ -52,5 +56,17 @@ public void Dispose()
5256
AppDomain.Unload(_domain);
5357
File.Delete(_fileName);
5458
}
59+
60+
public static string GenerateRandomString(int length)
61+
{
62+
byte[] bytes = new byte[length];
63+
var random = new Random();
64+
random.NextBytes(bytes);
65+
StringBuilder result = new StringBuilder(length);
66+
foreach (var b in bytes)
67+
result.Append(_chars[b % _chars.Length]);
68+
69+
return result.ToString();
70+
}
5571
}
5672
}

0 commit comments

Comments
 (0)