On Jan 5, 2010, at 8:06 AM, Ben Abbott wrote:
>
> On Jan 5, 2010, at 1:46 AM, John W. Eaton wrote:
>
>> On 4-Jan-2010, Ben Abbott wrote:
>>
>> | I discovered some typos in my build process. With those fixed, I have one failure.
>> |
>> | >>>>> processing /Users/bpabbott/Development/mercurial/local_clone/src/data.cc
>> | ***** assert(log2(complex(0,Inf)), Inf + log2(i));
>> | !!!!! test failed
>> | assert (log2 (complex (0, Inf)),Inf + log2 (i)) expected
>> | Inf + 2.266i
>> | but got
>> | Inf - NaNi
>> | NaNs don't match
>>
>> I think we discussed this problem on one of the lists recently. It
>> happens with GCC if you compile without optimization.
>
> Unfortunately, once I get to -O2 with Apple's variant of gcc 4.2 ...
>
> octave:12> info = struct (zeros (0, 1), {"name", "date", "bytes", "isdir", "datenum", "statinfo"})
> info =
> {
> 0x1 struct array containing the fields:
>
> name
> date
> bytes
> isdir
> datenum
> statinfo
> }
>
> octave:13> info(554,1).name = 'zfstream.h'
> error: invalid assignment to cs-list outside multiple assign
After pulling the current sources, and building autogen -> configure -> make -> make check ... the error above is gone. I recall trying this several days ago ... perhaps I typed "-01" instead?
In any event, for Xcode's gcc 4.2 compiler using "-O1" eliminates the error above.
>
>>
>> | About half the time I run fntests.m from the command line it
>> | passes. I occasionally get a failure when testing chol.cc
>> | (increasing the error tolerance would fix that).
>>
>> Which test fails, and which tolerance should be increased?
>>
>
> I have trouble with the single precision tests.
>
> %!test
> %! u2 = single ([ 0.35080 ;
> %! 0.63930 ;
> %! 3.31057 ;
> %! -0.13825 ;
> %! 0.45266 ]);
> %!
> %! R = chol(single(A));
> %!
> %! j = 3; p = [1:j-1, j+1:5];
> %! R1 = cholinsert(R,j,u2); A1 = R1'*R1;
> %!
> %! assert(norm(triu(R1)-R1,Inf) == 0)
> %! assert(norm(A1(p,p) - A,Inf) < 1e1*eps('single'))
> %!
> %!test
> %! u2 = single ([ 0.35080 + 0.04298i;
> %! 0.63930 + 0.23778i;
> %! 3.31057 + 0.00000i;
> %! -0.13825 + 0.19879i;
> %! 0.45266 + 0.50020i]);
> %!
> %! R = chol(single(Ac));
> %!
> %! j = 3; p = [1:j-1, j+1:5];
> %! R1 = cholinsert(R,j,u2); A1 = R1'*R1;
> %!
> %! assert(norm(triu(R1)-R1,Inf) == 0)
> %! assert(norm(A1(p,p) - single(Ac),Inf) < 1e1*eps('single'))
>
> I'd planned to increase the tolerance after running some tests and determining the error's mean and std.
>
> Ben
A trivial changeset is attached to increase the tolerance for two single precision tests in chol.cc. If there are no objections, I'll push this latter today.
Ben