Aquileo | Recent changes to bugshttps://sourceforge.net/p/freemat/bugs/2023-05-20T15:17:35.938000ZRecent changes to bugsAquileo | #614 overloading a builtin function2023-05-20T15:17:35.938000Z2023-05-20T15:17:35.938000ZVichttps://sourceforge.net/u/vic5/https://sourceforge.net5ce0bd2f3c359853e9dabd8e6140435ae1a1677e<div class="markdown_content"><p>I'm using 4.2 on Windows. </p></div>Aquileo | overloading a builtin function2023-05-20T15:16:17.958000Z2023-05-20T15:16:17.958000ZVichttps://sourceforge.net/u/vic5/https://sourceforge.netc2dcc802f8542eaa6b69f785cc9e7f9a690ad15e<div class="markdown_content"><p>After overloading a builtin function, when I call 'builtin' function, it calls my overloaded function instead of the builtin version...<br/>
For example: <br/>
in current folder, in file 'sin.m' I define:</p>
<div class="codehilite"><pre><span></span><code><span class="k">function</span><span class="w"> </span>y<span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nf">sin </span><span class="p">(</span>x<span class="p">)</span>
<span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">100</span><span class="p">;</span><span class="w"> </span>
<span class="k">end</span>
</code></pre></div>
<p>Then on command line:<br/>
~~~<br/>
--> sin(0)<br/>
ans =<br/>
100<br/>
--> builtin('sin',0)<br/>
ans =<br/>
100 <br/>
~~~</p>
<p>Is there a way to fix this or a workaround I could use?<br/>
thanks</p></div>Aquileo | crash on version 4.22019-05-01T21:57:55.554000Z2019-05-01T21:57:55.554000ZFabrice Ducoshttps://sourceforge.net/u/ducos/https://sourceforge.netd0046e60878000b80bd7b3c17e93bd3d96d76b8f<div class="markdown_content"><p>It looks like Freemat 4.2 crashes in some cases of stack overflow. Here is an easy-to-reproduce example (observed with 4.2 on MacOSX 10.14.4), with a recursive implementation of the Fibonacci sequence.</p>
<div class="codehilite"><pre><span></span><span class="kd">function</span> <span class="nx">u</span> <span class="o">=</span> <span class="nx">fibrec</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span>
<span class="o">%</span> <span class="nx">computes</span> <span class="nx">the</span> <span class="nx">n</span><span class="o">-</span><span class="nx">th</span> <span class="nx">term</span> <span class="nx">of</span> <span class="nx">the</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="nx">Fibonacci</span> <span class="nx">sequence</span><span class="p">;</span> <span class="nx">recursive</span> <span class="nx">version</span>
<span class="nx">a</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">b</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">n</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<span class="nx">u</span> <span class="o">=</span> <span class="nx">a</span><span class="p">;</span>
<span class="nx">elseif</span> <span class="p">(</span><span class="nx">n</span> <span class="o">==</span> <span class="mi">1</span><span class="p">);</span>
<span class="nx">u</span> <span class="o">=</span> <span class="nx">b</span><span class="p">;</span>
<span class="k">else</span>
<span class="nx">u</span> <span class="o">=</span> <span class="nx">fibrec</span><span class="p">(</span><span class="nx">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nx">fibrec</span><span class="p">(</span><span class="nx">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<span class="nx">end</span><span class="p">;</span>
<span class="nx">end</span>
</pre></div>
<div class="codehilite"><pre><span></span>--> fibrec(5)
ans =
5
--> fibrec(100)
</pre></div>
<p><strong><crash></crash></strong></p></div>Aquileo | Build fails in clang-62018-04-26T05:15:06.240000Z2018-04-26T05:15:06.240000ZYurihttps://sourceforge.net/u/yurivict/https://sourceforge.netbc041bba64066c2cba32f34d0464e999f8cfedc5<div class="markdown_content"><p>I'm getting these warnings and erros on FreeBSD 12:</p>
<div class="codehilite"><pre><span></span>/wrkdirs/usr/ports/math/freemat/work/FreeMat-4.2-Source/libs/libMatC/CArray.cpp:125:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
/wrkdirs/usr/ports/math/freemat/work/FreeMat-4.2-Source/libs/libMatC/CArray.cpp:208:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
/wrkdirs/usr/ports/math/freemat/work/FreeMat-4.2-Source/libs/libMatC/CArray.cpp:234:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
/wrkdirs/usr/ports/math/freemat/work/FreeMat-4.2-Source/libs/libMatC/CArray.cpp:537:21: error: cannot initialize return object of type 'double' with an rvalue of type 'nullptr_t'
if (*flag) return NULL;
^~~~
/usr/include/sys/_null.h:37:14: note: expanded from macro 'NULL'
#define NULL nullptr
^~~~~~~
/wrkdirs/usr/ports/math/freemat/work/FreeMat-4.2-Source/libs/libMatC/CArray.cpp:572:21: error: cannot initialize return object of type 'double' with an rvalue of type 'nullptr_t'
if (*flag) return NULL;
^~~~
/usr/include/sys/_null.h:37:14: note: expanded from macro 'NULL'
#define NULL nullptr
^~~~~~~
3 warnings and 2 errors generated.
</pre></div>
</div>Aquileo | #489 Freemat GUI fails if it sees a file named "Private"2017-06-07T20:12:22.858000Z2017-06-07T20:12:22.858000ZGraham Inggshttps://sourceforge.net/u/ginggs/https://sourceforge.netf30aa479c6002b43332b763b881f2e99d57f51e2<div class="markdown_content"><p>Below is a patch fixing the issue. We want to scanDirectory() if fileBaseName matches 'private' case-insensitively.</p>
<p>--- a/libs/libFreeMat/Interpreter.cpp<br/>
+++ b/libs/libFreeMat/Interpreter.cpp<br/>
@@ -364,7 +364,7 @@<br/>
procFileP(prefix + ":" + fileBaseName,fileAbsoluteFilePath,tempfunc);<br/>
else if (fileBaseName<span>[0]</span> == '@')<br/>
scanDirectory(fileAbsoluteFilePath,tempfunc,fileBaseName);<br/>
- else if (fileBaseName == "private")<br/>
+ else if (fileBaseName.toUpper() == "PRIVATE")<br/>
scanDirectory(fileAbsoluteFilePath,tempfunc,fileAbsoluteFilePath);<br/>
else<br/>
procFileMex(fileBaseName,fileAbsoluteFilePath,tempfunc);</p></div>Aquileo | #563 Help->About doesn't give version2017-06-07T20:08:36.227000Z2017-06-07T20:08:36.227000ZGraham Inggshttps://sourceforge.net/u/ginggs/https://sourceforge.netd542752470379d2cf300f1f558a4aaaebdf44a2b<div class="markdown_content"><p>Below is a patch fixing the issue. FREEMAT_VERSION is already quoted.</p>
<p>--- a/src/application.cpp<br/>
+++ b/src/application.cpp<br/>
@@ -429,7 +429,7 @@<br/>
void ApplicationWindow::about() {<br/>
QString text;<br/>
text += "FreeMat Version ";<br/>
- text += QUOTEME(FREEMAT_VERSION);<br/>
+ text += FREEMAT_VERSION;<br/>
text += "\n\n";<br/>
text += "Licensed under the GNU Public License Ver 2\n";<br/>
text += "Web: <a href="http://freemat.sf.net\n">http://freemat.sf.net\n</a>";</p></div>Aquileo | #604 Sign of polynomial return for polyder2017-05-28T23:14:23.420000Z2017-05-28T23:14:23.420000Zengpxchttps://sourceforge.net/u/engpxc/https://sourceforge.netc1d0a04da497436f5947b9b8a7ca51f70c33fbae<div class="markdown_content"><p>Hi,</p>
<p>back in 2007 I contributed a polyder function (and other functions) to FREEMAT. I see now that it has been replaced by a different, possibly more complete, function that, unfortunately is yielding a wrong result.</p>
<p>I am posting here again my original contribution in the hope that it will help someone in the future. If the FREEMAT development team wishes, they can use it to correct their own version:</p>
<div class="codehilite"><pre><span class="c1">% POLYDER POLYDER Polynomial Differentiation</span>
<span class="c1">% </span>
<span class="c1">% Usage</span>
<span class="c1">% </span>
<span class="c1">% The polyder function returns the polynomial coefficients resulting</span>
<span class="c1">% from differentiation of polynomial p. The syntax for its use is either</span>
<span class="c1">% </span>
<span class="c1">% pder = polyder(p)</span>
<span class="c1">% </span>
<span class="c1">% for the derivitave of polynomial p, or</span>
<span class="c1">% </span>
<span class="c1">% convp1p2der = polyder(p1,p2)</span>
<span class="c1">% </span>
<span class="c1">% for the derivitave of polynomial conv(p1,p2), or still</span>
<span class="c1">% </span>
<span class="c1">% [nder,dder] = polyder(n,d)</span>
<span class="c1">% </span>
<span class="c1">% for the derivative of polynomial n/d (nder/dder). In all cases the</span>
<span class="c1">% polynomial coefficients are assumed to be in decreasing degree.</span>
<span class="c1">% </span>
<span class="c1">% This is a small contribution to FreeMat</span>
<span class="c1">% made by Paulo Xavier Candeias under GPL</span>
<span class="c1">% (2007-06-14)</span>
<span class="c1">% </span>
<span class="s-Atom">function</span> <span class="p">[</span><span class="s-Atom">pder1</span><span class="p">,</span><span class="s-Atom">pder2</span><span class="p">]</span> <span class="o">=</span> <span class="nf">polyder</span><span class="p">(</span><span class="s-Atom">p1</span><span class="p">,</span><span class="s-Atom">p2</span><span class="p">)</span>
<span class="s-Atom">if</span> <span class="s-Atom">nargin</span> <span class="o"><</span> <span class="mi">1</span> <span class="p">||</span> <span class="s-Atom">nargout</span> <span class="o">></span> <span class="s-Atom">nargin</span>
<span class="nf">error</span><span class="p">(</span><span class="s-Atom">'wrong use (see help polyder)'</span><span class="p">);</span>
<span class="s-Atom">elseif</span> <span class="s-Atom">nargin</span> <span class="o"><</span> <span class="mi">2</span>
<span class="s-Atom">p2</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="s-Atom">end</span>
<span class="s-Atom">zp1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="nf">p1</span><span class="p">(</span><span class="s-Atom">:</span><span class="p">).</span><span class="s-Atom">'];</span>
<span class="s-Atom"> zp2 = [0,p2(:).'</span><span class="p">];</span>
<span class="s-Atom">pd1p2</span> <span class="o">=</span> <span class="nf">conv</span><span class="p">(</span><span class="nf">zp1</span><span class="p">(</span><span class="mi">1</span><span class="s-Atom">:end</span><span class="o">-</span><span class="mi">1</span><span class="p">).</span><span class="s-Atom">*</span><span class="p">(</span><span class="nf">length</span><span class="p">(</span><span class="s-Atom">zp1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">:-</span><span class="mi">1</span><span class="s-Atom">:</span><span class="mi">1</span><span class="p">),</span><span class="s-Atom">zp2</span><span class="p">);</span>
<span class="s-Atom">p1pd2</span> <span class="o">=</span> <span class="nf">conv</span><span class="p">(</span><span class="s-Atom">zp1</span><span class="p">,</span><span class="nf">zp2</span><span class="p">(</span><span class="mi">1</span><span class="s-Atom">:end</span><span class="o">-</span><span class="mi">1</span><span class="p">).</span><span class="s-Atom">*</span><span class="p">(</span><span class="nf">length</span><span class="p">(</span><span class="s-Atom">zp2</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">:-</span><span class="mi">1</span><span class="s-Atom">:</span><span class="mi">1</span><span class="p">));</span>
<span class="s-Atom">if</span> <span class="s-Atom">nargout</span> <span class="o"><</span> <span class="mi">2</span>
<span class="s-Atom">pder1</span> <span class="o">=</span> <span class="s-Atom">pd1p2</span><span class="o">+</span><span class="s-Atom">p1pd2</span><span class="p">;</span>
<span class="s-Atom">pder2</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="s-Atom">else</span>
<span class="s-Atom">pder1</span> <span class="o">=</span> <span class="s-Atom">pd1p2</span><span class="o">-</span><span class="s-Atom">p1pd2</span><span class="p">;</span>
<span class="s-Atom">pder2</span> <span class="o">=</span> <span class="nf">conv</span><span class="p">(</span><span class="s-Atom">zp2</span><span class="p">,</span><span class="s-Atom">zp2</span><span class="p">);</span>
<span class="s-Atom">end</span>
<span class="s-Atom">pder1</span> <span class="o">=</span> <span class="nf">pder1</span><span class="p">(</span><span class="nf">min</span><span class="p">(</span><span class="nf">find</span><span class="p">(</span><span class="s-Atom">pder1</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="nf">length</span><span class="p">(</span><span class="s-Atom">pder1</span><span class="p">))</span><span class="s-Atom">:end</span><span class="p">);</span>
<span class="s-Atom">pder2</span> <span class="o">=</span> <span class="nf">pder2</span><span class="p">(</span><span class="nf">min</span><span class="p">(</span><span class="nf">find</span><span class="p">(</span><span class="s-Atom">pder2</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="nf">length</span><span class="p">(</span><span class="s-Atom">pder2</span><span class="p">))</span><span class="s-Atom">:end</span><span class="p">);</span>
</pre></div>
<p>Happy coding,<br/>
Paulo</p></div>Aquileo | bug in dec2bin2016-08-31T20:14:13.343000Z2016-08-31T20:14:13.343000ZAleksey Nurutdinovhttps://sourceforge.net/u/aleksnur92/https://sourceforge.net7c0e88d146a58cc060647d73a7209a1e2d68e188<div class="markdown_content"><p>Bug, with 2^(*)<br/>
--> dec2bin(2^35)</p>
<p>ans = <br/>
00000000000000000000000000000000000<br/>
,but<br/>
--> dec2bin(2^35,36)</p>
<p>ans = <br/>
100000000000000000000000000000000000</p></div>Aquileo | Freemat 5?2016-05-25T04:48:52.724000Z2016-05-25T04:48:52.724000ZGene Stufflehttps://sourceforge.net/u/elffuts/https://sourceforge.netca1d400a595f664fb3c49b0caea8ba841dcce4b6<div class="markdown_content"><p>I noticed that Samit has recently submitted several items that were from a folder/directory named "Freemat5". Does that mean there's a new version on the horizon?</p></div>Aquileo | problem with function wavwrite()2015-12-10T13:27:44.092000Z2015-12-10T13:27:44.092000Zsubbireddy pochamreddyhttps://sourceforge.net/u/subbireddy437/https://sourceforge.net840d34ead8d890167e4788b82a74c2f30ba2d304<div class="markdown_content"><p>To convert a.csv file to a.wav file I was tried to use wavwrite() function.but it doesn't work.<br/>
every time it says<br/>
wavwrite(x1,'L:\TRC01.wav');<br/>
In L:/FreeMatPortable/App/FreeMat/toolbox/io/wavwrite.m(wavwrite) at line 64<br/>
In docli(builtin) at line 1<br/>
In base(base)<br/>
In base()<br/>
In global()<br/>
Error: Illegal request for real part of scalar - this is bug</p></div>