<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><br>
    </p>
    <div class="moz-cite-prefix">Le 13/09/2019 à 15:04, Samuel Gougeon a
      écrit :<br>
    </div>
    <blockquote type="cite"
      cite="mid:ff35f31e-9476-5fe2-4546-82b14e767f63@free.fr">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div class="moz-cite-prefix">Le 04/09/2019 à 09:11, Federico
        Miyara a écrit :<br>
      </div>
      <blockquote type="cite"
        cite="mid:b7587faa-5b7b-c402-abf6-291d6a80aa86@fceia.unr.edu.ar">
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <br>
        <font face="Courier New">Dear all, <br>
          <br>
          I need to create a boolean vector, such as [%t, %t, %t, %t]
          but with a number of components given by a variable n. I
          couldn't find a function similar to ones(1,n).<br>
          <br>
          However I've found a workaround:<br>
          <br>
          a = ones(1,n) & %t<br>
          <br>
          It shouldn't work because ones(1,n) is not boolean, but it
          does.<br>
          <br>
          Questions: <br>
          1) Why does it work?<br>
          2) Is there some native function to create bolean matrices<br>
          3) If not, are there any plans to introduce functions such as
          true(m,n) or false(m,n)?<br>
        </font></blockquote>
      <p><br>
      </p>
      <p>I hope no. These are typical -- IMO fake -- functions that i
        would not expect in Scilab (and in any other language). There
        are many trivial and fast ways to create a boolean array of
        given dimensions.<br>
      </p>
      <p>To me, the only need is to document these trivial ways in the
        help pages of %F and %T.<br>
        Replacing a few lines of documentation with a lot of trivial
        duplicated codes, separate pages, separate tests always look a
        very bad idea to me.<br>
      </p>
      <p>But i can understand that, for some habit reason, former
        octavers would appreciate their usual functions.<br>
        This is why i don't clearly understand why this sub-community
        does not build <i>and maintain</i> a "Matlabic" ATOMS package
        gathering this kind of "aliases", or do not invest time to
        contribute to the m2sci converter improvement.</p>
      <p>Even when repmat() will be fastened by a factor 7 through its <a
          moz-do-not-send="true"
href="https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/codereview.scilab.org/#/c/19782">upgrade
          pending for 7 months now</a>, it won't be the optimal way,
        noticeably due to its overhead.</p>
      <p>I am neither very convinced by the ones(m,n,.,"boolean") and
        zeros(m,n,.. "boolean") proposal, for the same reason initially
        exposed by Alain. But why not.<br>
        In the same commit, Stéphane proposes to allow using the <b>"logical"</b>
        keyword as an equivalent of the "boolean" one. On this side, i
        definitively disagree with this. Indeed,</p>
      <ol>
        <li>it would be useless, adding strictly no value to scilab</li>
        <li>it would introduce a confusion for everyone, including for
          former octavers, since in Octave an array of logical type is
          made of 0 and 1, not of %F and %T. While in Scilab we can also
          have arrays of 0 and 1.<br>
        </li>
      </ol>
    </blockquote>
    OK Samuel, I can forget this one. However, "double" should be kept
    as an equivalent of "constant", even if not the name of a scilab
    type returned by typeof(). We already have the macro "double()"
    (instead of "constant()") and the keyword "double" used everywhere
    in the API.<br>
    <blockquote type="cite"
      cite="mid:ff35f31e-9476-5fe2-4546-82b14e767f63@free.fr">
      <ol>
        <li> <br>
        </li>
      </ol>
      <p>About trivial ways, a preliminary note -- and answer to
        Federico :</p>
      <p> </p>
      <blockquote type="cite"><font face="Courier New">2) How much
          memory does it take a boolean scalar? Does a boolean vector
          eploit the fact that a byte could theoretically host up to 8
          boolean components?<br>
        </font></blockquote>
      <p>4 bytes / boolean. This big memory waste is reported since a
        while: <a class="moz-txt-link-freetext"
href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/12789"
          moz-do-not-send="true">http://bugzilla.scilab.org/12789</a></p>
    </blockquote>
    I think it was stored as 4 bytes for historical reasons (in Visual
    Studio up to version 4.2 C++ int was 4 bytes)<br>
    <blockquote type="cite"
      cite="mid:ff35f31e-9476-5fe2-4546-82b14e767f63@free.fr">
      <p>This means that, using an array of decimal numbers to create a
        boolean array uses an intermediate memory "only" ~twice bigger
        than the final result.<br>
        <br>
        About some trivial efficient ways:</p>
      <ul>
        <li>Array of %F : <br>
        </li>
        <ul>
          <li>zeros(m,n,..)==1 <br>
            as Christophe does, the way i use when, for 99,5% of cases,
            a factor 2 in intermediate memory is not critical<br>
          </li>
          <li>a(m,n,..) = %f;<br>
            or safer:<br>
            clear a, a(m,n,..) = %f;</li>
        </ul>
        <li>Array of %T :</li>
        <ul>
          <li>zeros(m,n,..)==0</li>
          <li>a(m,n,..) = %f; ~a</li>
        </ul>
        <li>Random boolean array :</li>
        <ul>
          <li>rand(m,n,..) < 0.5</li>
        </ul>
      </ul>
      <p>Personnaly, i don't need any option for getting all this. But
        documenting it would be useful.<br>
        In the same way, we can use<br>
      </p>
      <ul>
        <li>clear c, c =(5,4,7) = %i*0 // to initiate an array of 0+0i
          complex-encoded array</li>
        <li>clear p, p(5,4,7) = %z*0  // to initiate an array of 0z
          polynomials</li>
        <li>etc</li>
      </ul>
      <p>.. still without any specific functions or option.<br>
      </p>
      <p>Best regards<br>
        Samuel</p>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users">https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
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
<a class="moz-txt-link-freetext" href="http://www.utc.fr/~mottelet">http://www.utc.fr/~mottelet</a>
</pre>
  </body>
</html>