989e8d29c6adac9b5df37cc8ab087a28c5d470da
[scilab.git] / scilab / modules / elementary_functions / macros / logspace.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
13 function y=logspace(d1, d2, n)
14     // Logarithmically spaced vector.
15     // logspace(d1, d2) generates a row vector of n logarithmically
16     // equally spaced points between 10^d1 and 10^d2.  If d2=%pi
17     // then the points are between 10^d1 and pi.
18     // logspace(d1, d2, n) generates n points.
19
20     rhs = argn(2);
21     if rhs < 2 then
22         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"logspace", 2));
23     end
24     if size(d1,2)<>1 then
25         error(msprintf(gettext("%s: Wrong size for input argument #%d: A column vector expected.\n"),"logspace",1));
26     end
27
28     if ~and(size(d1) == size(d2)) then
29         error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"logspace",1,2));
30     end
31
32     if rhs == 2 then
33         n = 50;
34     else
35         if type(n)<>1|size(n,"*")<>1 then
36             error(msprintf(gettext("%s: Wrong type for input argument #%d: An integer value expected.\n"),"logspace",3));
37         end
38         if int(n) <> n then
39             warning(msprintf("%s: Using a non integer value for input argument #%d is deprecated and will produce an error in version 5.4.1.\n","logspace",3));
40         end
41     end
42     if d2==%pi then
43         d2 = log10(%pi);
44     end
45     y=10^( d1*ones(1,n) + [(d2-d1)*(0:n-2)/(floor(n)-1),d2-d1]);
46 endfunction