Difference between revisions of "User:Andy1978"

From Octave
Jump to navigation Jump to search
Line 34: Line 34:
 
  mtimes(num2cell(m,[1,2]){:})
 
  mtimes(num2cell(m,[1,2]){:})
 
  mtimes(s{:})
 
  mtimes(s{:})
 +
 +
== Tracking octave bugs with hg bisect==
 +
I had a strange problem when loading gzip compressed ascii files in octave. It failed dependent on the integer values. After some stripping I made a minimalistic test script (min_testcase_fails.m) which always fails in a current dev (88616c872933):
 +
fn="file2.txt"
 +
fid = fopen (fn,"w");
 +
fprintf(fid, "%i %i %i %i\n",639, 25, 160, 978160);
 +
fprintf(fid, "%i %i %i %i\n",687, 25, 171, 978160);
 +
fprintf(fid, "%i %i %i %i\n",663, 31, 173, 978161);
 +
fprintf(fid, "%i %i %i %i\n",663, 15, 154, 978161);
 +
fprintf(fid, "%i %i %i %i\n",655, 21, 151, 978161);
 +
fclose(fid);
 +
## gzip it!
 +
fn_gz=strcat(fn, ".gz");
 +
cmd=cstrcat("gzip ",fn," -c > ",fn_gz)
 +
system(cmd);
 +
c=load("file2.txt.gz")  #this fails in newer versions
 +
 +
If line 4 with "663, 15, 154, 978161" is changed to ""663, 16, 154, 978161", load works as expected. '''Strange, isn't it?'''
 +
I also had an old build (dev ab1c6e6d1be6 from Sun Oct 28 21:48:02 2012) and "load" worked in this version.
 +
 +
=== Running bisect ===
 +
I decided to make a fresh clone in a separate directory:
 +
cd ~/src
 +
hg clone http://www.octave.org/hg/octave octave-src
 +
cd octave-src
 +
hg bisect -b 88616c872933
 +
hg bisect -g ab1c6e6d1be6
 +
After this hg bisect uses a binary search strategy to test revisions:
 +
Teste Änderungssatz 16428:f016a5342e19 (1380 Änderungssätze verbleiben, ~10 Tests)
 +
So after checkout I had to compile the source tree (used ccache in the hope of faster checkout-compile cycles).
 +
./bootstrap
 +
cd .. && mkdir octave-build
 +
export CXX="ccache g++"
 +
export CC="ccache gcc"
 +
../octave/configure
 +
make -j 7
 +
After compilation I tried my testscript min_testcase_fails.m:
 +
./run-octave -q ../min_testcase_fails.m
 +
 +
cd ..
 +
cd octave
 +
hg bisect -g
 +
 +
 +
I used [http://jordi.platinum.linux.pl/tmp/bisect-32818.sh Jordis bisect script for bug 32818] and modified it to my needs:

Revision as of 23:28, 1 August 2013


ToDo

Core

Forge

image

  • implement SURF, integralImage is cumsum(cumsum(a,1),2)
corner/cornermetric, harris

First post on mailing list in 12.01.2013 http://octave.1599824.n4.nabble.com/corner-cornermetric-equivalent-in-octave-td4648802.html

brainstorming

Snippets

chain matrix multiplication

a=[1 2; 3 4];
b=[4 2; 8 1];
c=[2 3; 1 -1];
m=cat(3,a,b,c);
s=cell(3,1);
s{1}=a;s{2}=b; s{3}=c;
a*b*c
s{1}*s{2}*s{3}
mtimes(num2cell(m,[1,2]){:})
mtimes(s{:})

Tracking octave bugs with hg bisect

I had a strange problem when loading gzip compressed ascii files in octave. It failed dependent on the integer values. After some stripping I made a minimalistic test script (min_testcase_fails.m) which always fails in a current dev (88616c872933):
fn="file2.txt"
fid = fopen (fn,"w");
fprintf(fid, "%i %i %i %i\n",639, 25, 160, 978160);
fprintf(fid, "%i %i %i %i\n",687, 25, 171, 978160);
fprintf(fid, "%i %i %i %i\n",663, 31, 173, 978161);
fprintf(fid, "%i %i %i %i\n",663, 15, 154, 978161);
fprintf(fid, "%i %i %i %i\n",655, 21, 151, 978161);
fclose(fid);
## gzip it!
fn_gz=strcat(fn, ".gz");
cmd=cstrcat("gzip ",fn," -c > ",fn_gz)
system(cmd);
c=load("file2.txt.gz")  #this fails in newer versions

If line 4 with "663, 15, 154, 978161" is changed to ""663, 16, 154, 978161", load works as expected. Strange, isn't it? I also had an old build (dev ab1c6e6d1be6 from Sun Oct 28 21:48:02 2012) and "load" worked in this version.

Running bisect

I decided to make a fresh clone in a separate directory:

cd ~/src
hg clone http://www.octave.org/hg/octave octave-src
cd octave-src
hg bisect -b 88616c872933
hg bisect -g ab1c6e6d1be6

After this hg bisect uses a binary search strategy to test revisions:

Teste Änderungssatz 16428:f016a5342e19 (1380 Änderungssätze verbleiben, ~10 Tests)

So after checkout I had to compile the source tree (used ccache in the hope of faster checkout-compile cycles).

./bootstrap
cd .. && mkdir octave-build
export CXX="ccache g++"
export CC="ccache gcc"
../octave/configure
make -j 7

After compilation I tried my testscript min_testcase_fails.m:

./run-octave -q ../min_testcase_fails.m

cd .. cd octave hg bisect -g


I used Jordis bisect script for bug 32818 and modified it to my needs: