<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hello Denis,</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Le 07/05/2020 à 14:58, CRETE Denis a
      écrit :<br>
    </div>
    <blockquote type="cite"
cite="mid:EC9DE3078260CA48826D0B33052BA9D63CC70D93@CNREXCMBX04P.core-res.rootcore.local">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <style type="text/css" id="owaParaStyle"></style>
      <div style="direction: ltr;font-family: Tahoma;color:
        #000000;font-size: 10pt;">
        <div>Hello,</div>
        <div><br>
        </div>
        <div>I redefined a few functions in Scilab 6.1.0 to extend them
          to arrays with 3 dimensions (formerly called hypermatrix).
          Overloading works with "clean", "multiply", "left division"
          and "element by element division" (after defining functions
          %s_clean, %s_m_s, %s_l_s and %s_d_s).</div>
        <div>
          <div><br>
          </div>
          <div>I tried to overload function "inv" with the following
            code:</div>
        </div>
        <div><br>
          function y=%s_inv(x),<br>
              if ndims(x)>2 then<br>
                  for k=1:size(x,3),<br>
                      y(:,:,k)=inv(x(:,:,k));<br>
                  end;<br>
              else <br>
                  y=inv(x);<br>
              end;<br>
          endfunction</div>
        <div><br>
        </div>
        <div>expecting that each layer of y is the reciprocal of
          corresponding layer of x. Instead,
          <br>
        </div>
        <div>inv(ones(1,1,2).*.rand(2,2)) returns the reciprocal of x
          layer 1 in y layer 1 AND x LAYER n IN y LAYER n, WHEN n>1.
          I use "layer" to designate the matrix obtain for a fixed value
          the index along the 3rd dimension.</div>
        <div><br>
        </div>
        <div>Code to reproduce the problem:</div>
        <div><br>
        </div>
        <div>n=4; m=3;<br>
        </div>
        <div>M=ones(1,1,n).*.rand(m,m);</div>
        <div>inv(M)</div>
        <div><br>
        </div>
        <div>Attempts to circumvent this problem by using M^(-1) instead
          of inv(M) run into the same problem (after redefining function
          %s_p). Is this a bug or did I miss something ?</div>
      </div>
    </blockquote>
    <p><br>
    </p>
    <p>It's a bug. inv() should display an error message inviting to
      define %s_inv(), or use %s_inv().<br>
      By the way, the hook to the overload existed in Scilab 5.5.2.
      Hence, this issue is a regression.<br>
      Could you please report it?<br>
      Thanks<br>
    </p>
    <p>Samuel<br>
    </p>
    <br>
  </body>
</html>