[Scilab-users] {EXT} strange behaviof of function isreal
Stéphane Mottelet
stephane.mottelet at utc.fr
Wed Nov 13 13:22:02 CET 2019
Le 13/11/2019 à 13:01, Samuel Gougeon a écrit :
> Le 13/11/2019 à 12:32, Stéphane Mottelet a écrit :
>>
>>
>> Le 13/11/2019 à 11:58, Samuel Gougeon a écrit :
>>> Dear all,
>>>
>>> Le 13/11/2019 à 11:16, Stéphane Mottelet a écrit :
>>>> Le 13/11/2019 à 11:09, Dang Ngoc Chan, Christophe a écrit :
>>>>
>>>>> Hello,
>>>>>
>>>>>> De : De la part de Jean-Philippe Grivet
>>>>>> Envoyé : mercredi 13 novembre 2019 10:50
>>>>>>
>>>>>> --> z = [1,2,3*%i]
>>>>>> z =
>>>>>> 1. 2. 3.i
>>>>>> --> isreal(z(1))
>>>>>> ans =
>>>>>> F
>>>>>> What did I miss ? Rhank you for your help.
>>>>> https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/help.scilab.org/docs/6.0.2/en_US/brackets.html
>>>>>
>>>>>
>>>>> "In some limits, brackets may be applied on a set of data having
>>>>> different but compatible types. In this case, some data are
>>>>> converted into the dominating type available in the set. The main
>>>>> conversion rules are the following:
>>>>> [...]
>>>>> 3. The result becomes complex-encoded as soon as a complex-encoded
>>>>> component -- value, polynomial, or rational -- is met in the list
>>>>> (even with a null imaginary part)"
>>>>
>>>> This non-intuitive behavior will be fixed as soon as the patch
>>>>
>>>> https://codereview.scilab.org/#/c/21090/
>>>>
>>>> will be merged !
>>>
>>>
>>> I hope no. I would strongy disagree with it.
>>>
>>> The proper syntax for this test is *isreal(z(1), 0)*. Without its
>>> second argument, isreal(z(1)) tests the encoding, not the realness.
>>> This is already documented. Still improving the isreal()
>>> documentation page is planned for Scilab 6.1.0.
>>>
>>> To me, the only issue with the current isreal() implementation is
>>> that when it is used with its second argument, it should work
>>> element-wise.
>>> Presently, it is not the case. Thus, isreal(z,0) would answer [%T %T
>>> %F], while presently it returns the single %F as and([%T %T %F]).
>>> This is the only point.
>>>
>>> Stéphane's proposal would make isreal(1+0*%i) returning %T,
>>>
>> No. Please take time to read the details of the commit. In the patch
>> decomplexification occurs only *at extraction time*. Of course, the
>> modified help page (still to be pushed) should be part of the commit
>> to take into account the new behavior.
>>
> I did read the duplicate report and the commit when you pushed them.
> But again, their aim is IMO to badly answer to a bad usage but to a
> good question.
> With your current proposal, we would have:
>
> --> z = complex(1,0);
> --> isreal(z) // => %F
> --> isreal(z(1)) // => %T
>
> How could this appear not puzzling to us? What an unjustified price
> just to not use the tolerance argument cleverly proposed by Scilab,
> unlike Matlab and Octave.
> By the way, this would differ from the documented Matlab behavior
> (while Octave differs from it).
> As Matlab, Octave does not propose a tolerance as second argument.
> It's their weakness.
>
> I am not sorry to say that, with it, Scilab is more clever than both.
>
Nothing puzzling here. "z" denotes the original vector as a well
defined *reference*, while z(1) denotes a temporary value (yielded by an
extraction). This is subtle, but clever, sorry to say that.
>
> Regards
> Samuel
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users
--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20191113/275975ce/attachment.htm>
More information about the users
mailing list