[Pkg-octave-devel] Sparse + complex arithmetic inconsistency

Rafael Laboissiere rafael at debian.org
Fri Mar 30 10:22:26 CET 2007


* David Bateman <David.Bateman at motorola.com> [2007-03-30 10:58]:

> Rafael Laboissiere wrote:
> > I have here:
> >
> > $ g++ --version | fgrep g++
> > g++ (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
> >   
> This might play a part in the issue.

Could someone write a simple C++ test program that could put the bug in
evidence?

> No I don't think this matters, as the "./" operator directly calls the
> libc++ std::<complex>(double) division operator. However it should do this
> for both "./" on full and sparse matrices, therefore "(1+1i)/0" and
> "sparse(1+1i)/sparse(0)" should both give the same result. Can you confirm
> what "sparse(1+1i)/sparse(0)" gives on your system? However, given the
> "make check" failure you sent it appears that the full and sparse divisions
> don't agree.

Indeed:

octave2.9:1> (1+1i)/0
warning: division by zero
ans = Inf + Infi
octave2.9:2> sparse(1+1i)/sparse(0)
warning: division by zero
ans = NaN - NaNi

However:

octave2.9:3> 1/0
warning: division by zero
ans = Inf
octave2.9:4> sparse(1)/sparse(0)
warning: division by zero
ans = Inf

This is also weird:

octave2.9:5> 0/0
warning: division by zero
ans = NaN
octave2.9:6> sparse(0)/sparse(0)
warning: division by zero
ans = 0

> Looking at the code is Sparse-op-defs.h for quotient, I see no reason for
> this.

Which is the relevant part in this file?

-- 
Rafael



More information about the Pkg-octave-devel mailing list