[scilab-Users] min/max with NaN values
Michaël Baudin
michael.baudin at scilab.org
Wed Nov 24 11:40:53 CET 2010
Hi,
The expected result is actually the matrix of Nans. If you had found
another result, that would have been a bug. Even more, we have similar
automatic checks that this is so - see the following unit test :
http://gitweb.scilab.org/?p=scilab.git;a=blob;f=scilab/modules/elementary_functions/tests/unit_tests/IEEEcompatibility.tst;h=778fc00d4833f54fce6324ac917bac725d6f9e19;hb=HEAD
Notice that this test is mainly for +,-,*,/,sqrt, the operations which
are specified by the IEEE754 standard. With respect to Nan, these tests
says that "Nan on input, then Nan on output". In the IEEE754 standard,
the authors use the term "Nan propagation". More informations on this
topic are given by "Handbook of Floating Point Arithmetic", by Muller et
al.. See the sections "2.3 - Exceptions" and "3.1.5 Exceptions specified
by IEEE754-1985".
If you want to perform the computation without the nans, you may combine
the "find" and "isnan" functions. For example, the statement:
k = find(isnan(a))
you get the indices where a is a nan. Now, the statement:
a(isnan(a))=0
sets to zero the entries where Nan is present.
But be warned: Nans are *designed* to be propagated. That is, if your
input data contains Nans, that means that some previous computations has
already failed. The Nans should not be, in general, just ignored and
thrown away.
Best regards,
Michaël Baudin
Le 24/11/2010 10:11, Frederic Jourdin a écrit :
> Hi all !
> if I run this:
>
> a= [ 1, %nan; 4, 4];
> b= [ %nan, 3; 3, 6];
> c= [ 2, 2; %nan, %nan];
> min( a, b, c)
>
> Scilab returns the following matrix:
> NaN NaN
> NaN NaN
>
> while the expected matrix should be:
> 1 2
> 3 4
>
> Why?
>
> thanks
> Fred
>
> Scilab 5.3.0.beta3 on Linux
>
--
Michaël Baudin
Ingénieur de développement
michael.baudin at scilab.org
-------------------------
Consortium Scilab - Digiteo
Domaine de Voluceau - Rocquencourt
B.P. 105 - 78153 Le Chesnay Cedex
Tel. : 01 39 63 56 87 - Fax : 01 39 63 55 94
More information about the users
mailing list