[Scilab-users] isreal question

Samuel Gougeon sgougeon at free.fr
Fri Mar 6 21:51:33 CET 2020


Le 06/03/2020 à 19:31, kjubo a écrit :
> Dear all,
>
> consider this code:
>
> ==start of code
> clc
> clear
>
> a3 =  1
> a2 = -1
> a1 =  0.106865
> a0 = -0.002212
> mode(0)
> sol = roots([a3 a2 a1 a0])
> isreal(sol(1))
> isreal(sol(2))
> isreal(sol(3))
> ==end of code
>
> i get this print in console:
>
>    sol  =
>
>     0.8816333
>     0.0907062
>     0.0276605
>   ans  =
>
>    F
>   ans  =
>
>    F
>   ans  =
>
>    F
>
> I do not understand, why the isreal return false flag, if all roots are real
> with no imaginary part.
>
> I am missing something? Or it is bug?


isreal() tests the encoding as complex, not the mathematical realness.
If you wish to test the realness, then you have to use
isreal(x, 0)
Then, isreal(,0) still looks awkward, because we expect an element-wise 
answer, while only one scalar boolean is returned when x is a vector or 
a matrix.

Samuel





More information about the users mailing list