0001 function p = zero(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 ALGONAME = mfilename;
0019 VERSION = '$Id: zero.html,v 1.1 2007/06/08 14:15:09 hewitson Exp $';
0020
0021 if nargin == 1
0022
0023 if isnumeric(varargin{1})
0024 if isreal(varargin{1})
0025 p.name = 'real zero';
0026 p.f = varargin{1};
0027 p.q = -1;
0028 p.ri = p.f;
0029 p.version = VERSION;
0030 p = class(p, 'zero');
0031 else
0032 p.name = 'complex zero';
0033 [p.f, p.q] = pri2fq(varargin{1});
0034 p.ri = [varargin{1} conj(varargin{1})];
0035 p.version = VERSION;
0036 p = class(p, 'zero');
0037 end
0038 elseif isstruct(varargin{1})
0039
0040 p = class(varargin{1}, 'zero');
0041
0042 elseif isa(varargin{1}, 'plist')
0043
0044 p = zeroFromPlist(varargin{1}, VERSION);
0045
0046 elseif isa(varargin{1}, 'zero')
0047 p = varargin{1};
0048 else
0049 error('### unknown constructor method for zero class.');
0050 end
0051
0052 else
0053 if isnumeric(varargin{1}) && isnumeric(varargin{2})
0054 p.name = 'complex zero';
0055 p.f = varargin{1};
0056 p.q = varargin{2};
0057 p.ri = pfq2ri(p.f, p.q);
0058 p.version = VERSION;
0059 p = class(p, 'zero');
0060
0061 else
0062 error('### unknown constructor method for zero class.');
0063 end
0064
0065 end
0066
0067
0068
0069
0070 function p = zeroFromPlist(pl, VERSION)
0071
0072 f = find(pl, 'f');
0073 q = find(pl, 'q');
0074 ri = find(pl, 'ri');
0075
0076
0077 if ~isempty(f)
0078 if ~isempty(q)
0079
0080 p.name = 'complex zero';
0081 p.f = f;
0082 p.q = q;
0083 p.ri = pfq2ri(p.f, p.q);
0084 p.version = VERSION;
0085 p = class(p, 'zero');
0086
0087 else
0088
0089 p.name = 'real zero';
0090 p.f = f;
0091 p.q = -1;
0092 p.ri = p.f;
0093 p.version = VERSION;
0094 p = class(p, 'zero');
0095
0096 end
0097 elseif ~isempty(ri)
0098
0099 p.name = 'complex zero';
0100 [p.f, p.q] = pri2fq(ri);
0101 p.ri = ri;
0102 p.version = VERSION;
0103 p = class(p, 'zero');
0104
0105 else
0106 error('### unknown constructor method for zero class.');
0107 end
0108
0109
0110
0111