b3025639df580203bdce53b4bd3b2227341c074e
[scilab.git] / scilab / modules / overloading / macros / %b_e.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12 function f=%b_e(varargin)
13     //A(i,j,k,..)
14
15     rhs=size(varargin)
16     M=varargin(rhs)
17
18     nind=rhs-1
19     dims=[]
20     for k=3:nind
21         ind=varargin(k)
22         if type(ind)==2|type(ind)==129 then ind=horner(ind,1),end
23         if type(ind)==4 then ind=find(ind),end
24         if or(ind<>1) then error(21),end
25         n=size(ind,"*")
26         dims=[dims,n]
27     end
28     f=M(varargin(1:min(2,rhs-1)))
29     k=find(dims>1)
30     if k<>[] then
31         dims(k($)+1:$)=[]
32         N=prod(dims)
33         szf=size(f)
34         f=f(:)
35         f=matrix(f(:,ones(1,N)), [szf dims])
36     end
37 endfunction