[scilab-Users] min/max with NaN values
Mathieu Dubois
mathieu.dubois at limsi.fr
Wed Nov 24 11:47:17 CET 2010
On 11/24/2010 11:40 AM, Michaël Baudin wrote:
> 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".
That sounds like a sane convention but then, just out of curiosity, how
do you explain that min([1 2 3 %nan]) returns 1?
>
> 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
>>
>
>
More information about the users
mailing list