898e1088e7cba6939705c9971bcad0e996d4a846
[scilab.git] / scilab / modules / elementary_functions / macros / complex.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - Farid BELAHCENE
3 // Copyright (C) 2011 - DIGITEO - Michael Baudin
4 //
5 // Copyright (C) 2012 - 2016 - Scilab Enterprises
6 //
7 // This file is hereby licensed under the terms of the GNU GPL v2.0,
8 // pursuant to article 5.3.4 of the CeCILL v.2.1.
9 // This file was originally licensed under the terms of the CeCILL v2.1,
10 // and continues to be available under such terms.
11 // For more information, see the COPYING file which you should have received
12 // along with this program.
13
14 function  y=complex(varargin)
15
16     // COMPLEX function
17     // Given the real part and the imaginary part this function constructs the complex form : y=complex(a,b) returns y=a+b*i
18     // Inputs :
19     //  a, b : real scalars/vectors/matrices
20     // output :
21     // y : complex form
22
23     [lhs,rhs]=argn(0)
24     if ( rhs<1 | rhs>2 ) then
25         error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"),"complex",1,2));
26     end
27
28     // Get input arguments
29     a = varargin(1)
30     if ( rhs == 1 ) then
31         b = zeros(a)
32     else
33         b = varargin(2)
34     end
35     //
36     // Check type of input arguments
37     if ( typeof(a)<>"constant" ) then
38         error(msprintf(gettext("%s: Wrong type for argument #%d: Matrix expected.\n"),"complex",1));
39     end
40     if ( typeof(b)<>"constant" ) then
41         error(msprintf(gettext("%s: Wrong type for argument #%d: Matrix expected.\n"),"complex",2));
42     end
43     //
44     // Check size
45     if ( size(a,"*") <> 1 & size(b,"*") <> 1 & size(a)<>size(b) ) then
46         error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"complex",1,2));
47     end
48     //
49     // Check content of input arguments
50     if ( ~isreal(a) ) then
51         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"complex",1));
52     end
53     if ( ~isreal(b) ) then
54         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"complex",2));
55     end
56
57     // Proceed...
58     y = a+imult(b);
59 endfunction