annotate main/fixed/src/fixed.cc @ 9481:d84d2fea3c90 octave-forge

Re-enable compilation of fixed package
author jordigh
date Wed, 22 Feb 2012 22:07:33 +0000
parents f8d77845533f
children a9d1f82e4f62
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1 /*
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
2
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
3 Copyright (C) 2003 Motorola Inc
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
4 Copyright (C) 2003 David Bateman
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
5
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
6 This program is free software; you can redistribute it and/or modify it
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
9 later version.
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
10
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
11 This program is distributed in the hope that it will be useful, but WITHOUT
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
14 for more details.
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
15
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
4404
2de537641f94 More copyright updates
adb014
parents: 3272
diff changeset
17 along with this program; see the file COPYING. If not, see
2de537641f94 More copyright updates
adb014
parents: 3272
diff changeset
18 <http://www.gnu.org/licenses/>.
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
19
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
20 In addition to the terms of the GPL, you are permitted to link
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
21 this program with any Open Source program, as defined by the
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
22 Open Source Initiative (www.opensource.org)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
23
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
24 */
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
25
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
26 #include "ov-fixed.h"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
27 #include "ov-fixed-mat.h"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
28 #include "ov-fixed-complex.h"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
29 #include "ov-fixed-cx-mat.h"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
30 #include "fixed-var.h"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
31
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
32 #include <octave/variables.h>
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
33 #include <octave/utils.h>
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
34 #include <octave/pager.h>
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
35 #include <octave/defun-dld.h>
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
36 #include <octave/gripes.h>
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
37
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
38 extern void install_fs_fs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
39 extern void install_fs_fm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
40 extern void install_fm_fs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
41 extern void install_fm_fm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
42
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
43 extern void install_fs_fcs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
44 extern void install_fs_fcm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
45 extern void install_fm_fcs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
46 extern void install_fm_fcm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
47
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
48 extern void install_fcs_fs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
49 extern void install_fcs_fm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
50 extern void install_fcm_fs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
51 extern void install_fcm_fm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
52
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
53 extern void install_fcs_fcs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
54 extern void install_fcs_fcm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
55 extern void install_fcm_fcs_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
56 extern void install_fcm_fcm_ops (void);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
57
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
58 static bool fixed_type_loaded = false;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
59
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
60 void load_fixed_type (void)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
61 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
62 octave_fixed::register_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
63 octave_fixed_matrix::register_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
64 octave_fixed_complex::register_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
65 octave_fixed_complex_matrix::register_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
66
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
67 install_fs_fs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
68 install_fs_fm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
69 install_fm_fs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
70 install_fm_fm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
71
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
72 install_fs_fcs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
73 install_fs_fcm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
74 install_fm_fcs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
75 install_fm_fcm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
76
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
77 install_fcs_fs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
78 install_fcs_fm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
79 install_fcm_fs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
80 install_fcm_fm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
81
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
82 install_fcs_fcs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
83 install_fcs_fcm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
84 install_fcm_fcs_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
85 install_fcm_fcm_ops ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
86
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
87 fixed_type_loaded = true;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
88
5248
f8d77845533f Changes for compilation with 3.1.51+
adb014
parents: 4664
diff changeset
89 mlock ();
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
90 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
91
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
92 // PKG_ADD: autoload ("display_fixed_operations", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
93 DEFUN_DLD (display_fixed_operations, args, ,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
94 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
95 "@deftypefn {Loadable Function} {} display_fixed_operations ( )\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
96 "Displays out a summary of the number of fixed point operations of each\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
97 "type that have been used. This can be used to give a estimate of the\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
98 "complexity of an algorithm.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
99 "@end deftypefn\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
100 "@seealso{fixed_point_count_operations, reset_fixed_operations}")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
101 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
102 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
103 if ((args.length() != 0) || !fixed_type_loaded)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
104 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
105 else if (Fixed::FP_CountOperations)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
106 octave_stdout << Fixed::FP_Operations;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
107 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
108 error("display_fixed_operations: variable fixed_point_count_operations is zero");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
109
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
110 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
111 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
112
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
113 // PKG_ADD: autoload ("reset_fixed_operations", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
114 DEFUN_DLD (reset_fixed_operations, args, ,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
115 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
116 "@deftypefn {Loadable Function} {} reset_fixed_operations ( )\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
117 "Reset the count of fixed point operations to zero.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
118 "@end deftypefn\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
119 "@seealso{fixed_point_count_operations, display_fixed_operations}")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
120 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
121 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
122 if ((args.length() != 0) || !fixed_type_loaded)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
123 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
124 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
125 Fixed::FP_Operations.reset();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
126
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
127 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
128 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
129
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
130 // PKG_ADD: autoload ("isfixed", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
131 DEFUN_DLD (isfixed, args, ,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
132 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
133 "@deftypefn {Loadable Function} {} isfixed (@var{expr})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
134 "Return 1 if the value of the expression @var{expr} is a fixed point value.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
135 "@end deftypefn")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
136 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
137 if (args.length() != 1)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
138 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
139 else if (!fixed_type_loaded)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
140 // Can't be of fixed type if the type isn't load :-/
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
141 return octave_value(false);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
142 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
143 return (octave_value((args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
144 octave_fixed::static_type_id ()) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
145 (args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
146 octave_fixed_matrix::static_type_id ()) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
147 (args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
148 octave_fixed_complex::static_type_id ()) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
149 (args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
150 octave_fixed_complex_matrix::static_type_id ())));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
151 return octave_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
152 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
153
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
154 DEFUN_DLD (fixed, args, nargout,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
155 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
156 "@deftypefn {Loadable Function} {@var{y} =} fixed (@var{f})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
157 "@deftypefnx {Loadable Function} {@var{y} =} fixed (@var{is},@var{ds})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
158 "@deftypefnx {Loadable Function} {@var{y} =} fixed (@var{is},@var{ds},@var{f})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
159 "Used the create a fixed point variable. Called with a single argument, if\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
160 "@var{f} is itself a fixed point value, then @dfn{fixed} is equivalent to\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
161 "@code{@var{y} = @var{f}}. Otherwise the integer part of @var{f} is used\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
162 "to create a fixed point variable with the minimum number of bits needed\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
163 "to represent it. @var{f} can be either real of complex.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
164 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
165 "Called with two or more arguments @var{is} represents the number of bits\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
166 "used to represent the integer part of the fixed point numbers, and @var{ds}\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
167 "the number used to represent the decimal part. These variables must be\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
168 "either positive integer scalars or matrices. If they are matrices they\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
169 "must be of the same dimension, and each fixed point number in the created\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
170 "matrix will have the representation given by the corresponding values of\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
171 "@var{is} and @var{ds}.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
172 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
173 "When creating complex fixed point values, the fixed point representation\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
174 "can be different for the real and imaginary parts. In this case @var{is}\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
175 "and @var{ds} are complex integers."
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
176 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
177 "Additionally the maximum value of the sum of @var{is} and @var{ds} is\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
178 "limited by the representation of long integers to either 30 or 62.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
179 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
180 "Called with only two arguments, the fixed point variable that is created\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
181 "will contain only zeros. A third argument can be used to give the values\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
182 "of the fixed variables elements. This third argument @var{f} can be either\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
183 "a fixed point variable itself, which results in a new fixed point variable\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
184 "being created with a different representation, or a real or complex matrix.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
185 "@end deftypefn\n")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
186 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
187 int nargin = args.length();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
188 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
189
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
190 if ( nargin == 0 ) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
191 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
192 } else if (nargin == 1 ) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
193 if (fixed_type_loaded &&
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
194 (args(0).type_id () == octave_fixed_matrix::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
195 FixedMatrix f = ((const octave_fixed_matrix&) args(0).get_rep()).
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
196 fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
197 retval = new octave_fixed_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
198 } else if (fixed_type_loaded &&
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
199 (args(0).type_id () == octave_fixed::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
200 FixedPoint f = ((const octave_fixed&) args(0).get_rep()).fixed_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
201 retval = new octave_fixed (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
202 } else if (fixed_type_loaded &&
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
203 (args(0).type_id () == octave_fixed_complex::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
204 FixedPointComplex f = ((const octave_fixed_complex&)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
205 args(0).get_rep()).fixed_complex_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
206 retval = new octave_fixed_complex (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
207 } else if (fixed_type_loaded &&
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
208 (args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
209 octave_fixed_complex_matrix::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
210 FixedComplexMatrix f = ((const octave_fixed_complex_matrix&)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
211 args(0).get_rep()).fixed_complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
212 retval = new octave_fixed_complex_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
213 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
214 if (args(0).is_complex_type()) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
215 ComplexMatrix a = args(0).complex_matrix_value();
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
216 MArray<int> b(dim_vector (a.rows(),a.cols()));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
217 for (int j = 0; j < a.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
218 for (int i = 0; i < a.rows(); i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
219 b(i,j) = (int)real(a(i,j));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
220 FixedMatrix fr(b);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
221 for (int j = 0; j < a.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
222 for (int i = 0; i < a.rows(); i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
223 b(i,j) = (int)imag(a(i,j));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
224 FixedMatrix fi(b);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
225 retval = new octave_fixed_complex_matrix (fr, fi);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
226 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
227 Matrix a = args(0).matrix_value();
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
228 MArray<int> b(dim_vector (a.rows(),a.cols()));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
229 for (int j = 0; j < a.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
230 for (int i = 0; i < a.rows(); i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
231 b(i,j) = (int)a(i,j);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
232 FixedMatrix f(b);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
233 retval = new octave_fixed_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
234 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
235 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
236 } else if ((nargin ==2) || (nargin == 3)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
237 if (args(0).is_complex_type() || args(1).is_complex_type() ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
238 ((nargin > 2) && args(2).is_complex_type())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
239
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
240 MArray<int> mir, mii, mdr, mdi;
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
241 ComplexMatrix a, b;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
242 if (args(0).is_complex_type())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
243 a = args(0).complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
244 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
245 a = ComplexMatrix(args(0).matrix_value());
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
246 a = a + Complex(0.,1.)*a;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
247 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
248 if (args(1).is_complex_type())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
249 b = args(1).complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
250 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
251 b = ComplexMatrix(args(1).matrix_value());
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
252 b = b + Complex(0.,1.)*b;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
253 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
254
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
255 mir.resize(dim_vector (a.rows(),a.cols()));
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
256 mii.resize(dim_vector (a.rows(),a.cols()));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
257 for (int j = 0; j < a.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
258 for (int i = 0; i < a.rows(); i++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
259 mir(i,j) = (int) real(a(i,j));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
260 mii(i,j) = (int) imag(a(i,j));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
261 if ((std::abs(real(a(i,j))-(double)mir(i,j)) != 0.) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
262 (std::abs(imag(a(i,j))-(double)mii(i,j)) != 0.) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
263 (mir(i,j) < 0) || (mii(i,j) < 0)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
264 error("fixed: invalid fixed point representation");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
265 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
266 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
267 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
268
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
269 mdr.resize(dim_vector (b.rows(),b.cols()));
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
270 mdi.resize(dim_vector (b.rows(),b.cols()));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
271 for (int j = 0; j < b.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
272 for (int i = 0; i < b.rows(); i++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
273 mdr(i,j) = (int) real(b(i,j));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
274 mdi(i,j) = (int) imag(b(i,j));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
275 if ((std::abs(real(b(i,j))-(double)mdr(i,j)) != 0.) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
276 (std::abs(imag(b(i,j))-(double)mdi(i,j)) != 0.) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
277 (mir(i,j) < 0) || (mdi(i,j) < 0)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
278 error("fixed: invalid fixed point representation");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
279 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
280 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
281 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
282
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
283 if ((mir.rows() == 1) && (mir.cols() == 1)) {
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
284 mir.resize(dim_vector (mdr.rows(),mdr.cols()), mir(0,0));
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
285 mii.resize(dim_vector (mdr.rows(),mdr.cols()), mii(0,0));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
286 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
287 if ((mdr.rows() == 1) && (mdr.cols() == 1)) {
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
288 mdr.resize(dim_vector (mir.rows(),mir.cols()), mdr(0,0));
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
289 mdi.resize(dim_vector (mir.rows(),mir.cols()), mdi(0,0));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
290 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
291
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
292 if ((mir.rows() != mdr.rows()) || (mir.cols() != mdr.cols())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
293 error("fixed: dimension mismatch in args");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
294 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
295 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
296
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
297 if (nargin == 2 ) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
298 if (!fixed_type_loaded) load_fixed_type();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
299 if ((mir.rows() == 1) && (mir.cols() == 1)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
300 FixedPointComplex f( FixedPoint((int)mir(0,0), (int)mdr(0,0)),
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
301 FixedPoint((int)mii(0,0), (int)mdi(0,0)));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
302 retval = new octave_fixed_complex (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
303 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
304 FixedComplexMatrix f (FixedMatrix (mir, mdr),
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
305 FixedMatrix (mii, mdi));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
306 retval = new octave_fixed_complex_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
307 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
308 } else if (nargin == 3) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
309 ComplexMatrix c = args(2).complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
310 if ((mir.rows() == 1) && (mir.cols() == 1)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
311 if (!fixed_type_loaded) load_fixed_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
312 FixedComplexMatrix f(FixedMatrix((int)mir(0,0), (int)mdr(0,0),
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
313 real(c)),
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
314 FixedMatrix((int)mii(0,0), (int)mdi(0,0),
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
315 imag(c)));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
316 retval = new octave_fixed_complex_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
317 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
318 if ((mir.rows() != c.rows()) || (mir.cols() != c.cols()))
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
319 error("fixed: dimension mismatch in args");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
320 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
321 if (!fixed_type_loaded) load_fixed_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
322 FixedComplexMatrix f(FixedMatrix(mir, mdr, real(c)),
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
323 FixedMatrix(mii, mdi, imag(c)));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
324 retval = new octave_fixed_complex_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
325 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
326 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
327 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
328 } else {
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
329 MArray<int> mis, mds;
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
330 Matrix a = args(0).matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
331 Matrix b = args(1).matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
332
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
333 mis.resize(dim_vector (a.rows(),a.cols()));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
334 for (int j = 0; j < a.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
335 for (int i = 0; i < a.rows(); i++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
336 mis(i,j) = (int)a(i,j);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
337 if ((std::abs(a(i,j)-(double)mis(i,j)) != 0.) || (mis(i,j) < 0)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
338 error("fixed: invalid fixed point representation");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
339 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
340 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
341 }
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
342 mds.resize(dim_vector (b.rows(),b.cols()));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
343 for (int j=0; j < b.cols(); j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
344 for (int i=0; i < b.rows(); i++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
345 mds(i,j) = (int)b(i,j);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
346 if ((std::abs(b(i,j)-(double)mds(i,j)) != 0.) || (mds(i,j) < 0)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
347 error("fixed: invalid fixed point representation");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
348 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
349 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
350 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
351
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
352 if ((mis.rows() == 1) && (mis.cols() == 1))
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
353 mis.resize(dim_vector (mds.rows(),mds.cols()),mis(0,0));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
354 if ((mds.rows() == 1) && (mds.cols() == 1))
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
355 mds.resize(dim_vector (mis.rows(),mis.cols()),mds(0,0));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
356
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
357 if ((mis.rows() != mds.rows()) || (mis.cols() != mds.cols())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
358 error("fixed: dimension mismatch in args");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
359 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
360 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
361
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
362 if (nargin == 2 ) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
363 if (!fixed_type_loaded) load_fixed_type();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
364 if ((mis.rows() == 1) && (mis.cols() == 1)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
365 FixedPoint f(mis(0,0), mds(0,0));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
366 retval = new octave_fixed (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
367 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
368 FixedMatrix f(mis, mds);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
369 retval = new octave_fixed_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
370 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
371 } else if (nargin == 3) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
372 Matrix a = args(2).matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
373 if ((mis.rows() == 1) && (mis.cols() == 1)) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
374 if (!fixed_type_loaded) load_fixed_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
375 FixedMatrix f (mis(0,0), mds(0,0), a);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
376 retval = new octave_fixed_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
377 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
378 if ((mis.rows() != a.rows()) || (mis.cols() != a.cols()))
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
379 error("fixed: dimension mismatch in args");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
380 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
381 if (!fixed_type_loaded) load_fixed_type ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
382 FixedMatrix f (mis, mds, a);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
383 retval = new octave_fixed_matrix (f);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
384 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
385 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
386 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
387 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
388 } else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
389 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
390
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
391
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
392 if (error_state) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
393 error("fixed: failed to create fixed point number");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
394 return octave_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
395 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
396 retval.maybe_mutate();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
397 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
398 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
399 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
400
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
401 // This macro must start with DEFUN_DLD so that the automatic collection
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
402 // of the function helps can take place!! The second DEFUN_DLD must NOT
2870
96854eb1408c modify macro to aid indexing
adb014
parents: 2605
diff changeset
403 // appear on a new-line, otherwise the indexing script will be confused!!
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
404 #define DEFUN_DLD_FIXED_SNGL_ARG(NAME, HELP, FUNC, \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
405 REAL_CAN_RET_CMPLX_UPPER,UPPER, REAL_CAN_RET_CMPLX_LOWER, \
2605
4ee580968fce Some INDEX fixes. Many more needed
adb014
parents: 2394
diff changeset
406 LOWER) DEFUN_DLD (NAME, args, nargout, HELP) \
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
407 { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
408 int nargin = args.length(); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
409 octave_value retval; \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
410 if ( nargin != 1 ) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
411 print_usage (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
412 } else { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
413 if (fixed_type_loaded) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
414 if (args(0).type_id () == octave_fixed::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
415 FixedPoint f = ((const octave_fixed&) args(0).get_rep()) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
416 .fixed_value (); \
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
417 if ((REAL_CAN_RET_CMPLX_UPPER && (f > UPPER)) || \
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
418 (REAL_CAN_RET_CMPLX_LOWER && (f < LOWER))) \
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
419 retval = new octave_fixed_complex \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
420 (FUNC (FixedPointComplex(f,FixedPoint(f.getintsize(), \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
421 f.getdecsize())))); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
422 else \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
423 retval = new octave_fixed (FUNC (f)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
424 } else if (args(0).type_id () == \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
425 octave_fixed_matrix::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
426 FixedMatrix f = ((const octave_fixed_matrix&) args(0).get_rep()) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
427 .fixed_matrix_value (); \
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
428 if ((REAL_CAN_RET_CMPLX_UPPER && (f.row_max().max() \
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
429 > UPPER)) || \
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
430 (REAL_CAN_RET_CMPLX_LOWER && (f.row_min().min() \
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
431 < LOWER))) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
432 retval = new octave_fixed_complex_matrix \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
433 (FUNC (FixedComplexMatrix(f))); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
434 } else \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
435 retval = new octave_fixed_matrix (FUNC (f)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
436 } else if (args(0).type_id () == \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
437 octave_fixed_complex::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
438 FixedPointComplex f = ((const octave_fixed_complex&) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
439 args(0).get_rep()).fixed_complex_value (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
440 retval = new octave_fixed_complex (FUNC (f)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
441 } else if (args(0).type_id () == \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
442 octave_fixed_complex_matrix::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
443 FixedComplexMatrix f = ((const octave_fixed_complex_matrix&) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
444 args(0).get_rep()).fixed_complex_matrix_value (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
445 retval = new octave_fixed_complex_matrix (FUNC (f)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
446 } else \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
447 print_usage (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
448 } else \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
449 print_usage (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
450 } \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
451 retval.maybe_mutate(); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
452 return retval; \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
453 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
454
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
455 // PKG_ADD: autoload ("freal", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
456 // PKG_ADD: dispatch ("real", "freal", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
457 // PKG_ADD: dispatch ("real", "freal", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
458 // PKG_ADD: dispatch ("real", "freal", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
459 // PKG_ADD: dispatch ("real", "freal", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
460 DEFUN_DLD_FIXED_SNGL_ARG (freal, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
461 @deftypefn {Loadable Function} {@var{y} =} freal (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
462 Returns the real part of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
463 @end deftypefn", ::real, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
464
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
465 // PKG_ADD: autoload ("fimag", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
466 // PKG_ADD: dispatch ("imag", "fimag", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
467 // PKG_ADD: dispatch ("imag", "fimag", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
468 // PKG_ADD: dispatch ("imag", "fimag", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
469 // PKG_ADD: dispatch ("imag", "fimag", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
470 DEFUN_DLD_FIXED_SNGL_ARG (fimag, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
471 @deftypefn {Loadable Function} {@var{y} =} fimag (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
472 Returns the imaginary part of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
473 @end deftypefn", ::imag, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
474
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
475 // PKG_ADD: autoload ("fconj", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
476 // PKG_ADD: dispatch ("conj", "fconj", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
477 // PKG_ADD: dispatch ("conj", "fconj", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
478 // PKG_ADD: dispatch ("conj", "fconj", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
479 // PKG_ADD: dispatch ("conj", "fconj", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
480 DEFUN_DLD_FIXED_SNGL_ARG (fconj, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
481 @deftypefn {Loadable Function} {@var{y} =} fconj (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
482 Returns the conjuate of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
483 @end deftypefn", ::conj, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
484
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
485 // PKG_ADD: autoload ("fabs", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
486 // PKG_ADD: dispatch ("abs", "fabs", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
487 // PKG_ADD: dispatch ("abs", "fabs", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
488 // PKG_ADD: dispatch ("abs", "fabs", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
489 // PKG_ADD: dispatch ("abs", "fabs", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
490 DEFUN_DLD_FIXED_SNGL_ARG (fabs, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
491 @deftypefn {Loadable Function} {@var{y} =} fabs (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
492 Compute the magnitude of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
493 @end deftypefn", ::abs, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
494
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
495 // PKG_ADD: autoload ("farg", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
496 // PKG_ADD: dispatch ("arg", "farg", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
497 // PKG_ADD: dispatch ("arg", "farg", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
498 // PKG_ADD: dispatch ("arg", "farg", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
499 // PKG_ADD: dispatch ("arg", "farg", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
500 DEFUN_DLD_FIXED_SNGL_ARG (farg, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
501 @deftypefn {Loadable Function} {@var{y} =} farg (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
502 Compute the argument of @var{x}, defined as\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
503 @iftex\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
504 @tex\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
505 $\\theta = atan2( y , x)$\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
506 @end tex\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
507 @end iftex\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
508 @ifinfo\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
509 @var{theta} = @code{atan2 (@var{y}, @var{x})}\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
510 @end ifinfo\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
511 in radians. For example\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
512 \n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
513 @example\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
514 @group\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
515 farg (fixed (3,5,3+4i))\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
516 @result{} 0.90625\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
517 @end group\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
518 @end example\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
519 @end deftypefn", ::arg, 1, FixedPoint(1,0,1,0), 1, FixedPoint())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
520
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
521 // PKG_ADD: autoload ("fangle", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
522 // PKG_ADD: dispatch ("angle", "fangle", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
523 // PKG_ADD: dispatch ("angle", "fangle", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
524 // PKG_ADD: dispatch ("angle", "fangle", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
525 // PKG_ADD: dispatch ("angle", "fangle", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
526 DEFUN_DLD_FIXED_SNGL_ARG (fangle, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
527 @deftypefn {Loadable Function} {@var{y} =} fangle (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
528 See @dfn{farg}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
529 @end deftypefn", ::arg, 1, FixedPoint(1,0,1,0), 1, FixedPoint())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
530
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
531 // PKG_ADD: autoload ("fcos", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
532 // PKG_ADD: dispatch ("cos", "fcos", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
533 // PKG_ADD: dispatch ("cos", "fcos", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
534 // PKG_ADD: dispatch ("cos", "fcos", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
535 // PKG_ADD: dispatch ("cos", "fcos", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
536 DEFUN_DLD_FIXED_SNGL_ARG (fcos, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
537 @deftypefn {Loadable Function} {@var{y} =} fcos (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
538 Compute the cosine of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
539 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
540 @seealso{fcosh, fsin, fsinh, ftan, ftanh}", ::cos, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
541
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
542 // PKG_ADD: autoload ("fcosh", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
543 // PKG_ADD: dispatch ("cosh", "fcosh", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
544 // PKG_ADD: dispatch ("cosh", "fcosh", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
545 // PKG_ADD: dispatch ("cosh", "fcosh", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
546 // PKG_ADD: dispatch ("cosh", "fcosh", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
547 DEFUN_DLD_FIXED_SNGL_ARG (fcosh, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
548 @deftypefn {Loadable Function} {@var{y} =} fcosh (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
549 Compute the hyperbolic cosine of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
550 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
551 @seealso{fcos, fsin, fsinh, ftan, ftanh}", ::cosh, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
552
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
553 // PKG_ADD: autoload ("fsin", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
554 // PKG_ADD: dispatch ("sin", "fsin", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
555 // PKG_ADD: dispatch ("sin", "fsin", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
556 // PKG_ADD: dispatch ("sin", "fsin", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
557 // PKG_ADD: dispatch ("sin", "fsin", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
558 DEFUN_DLD_FIXED_SNGL_ARG (fsin, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
559 @deftypefn {Loadable Function} {@var{y} =} fsin (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
560 Compute the sine of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
561 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
562 @seealso{fcos, fcosh, fsinh, ftan, ftanh}", ::sin, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
563
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
564 // PKG_ADD: autoload ("fsinh", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
565 // PKG_ADD: dispatch ("sinh", "fsinh", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
566 // PKG_ADD: dispatch ("sinh", "fsinh", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
567 // PKG_ADD: dispatch ("sinh", "fsinh", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
568 // PKG_ADD: dispatch ("sinh", "fsinh", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
569 DEFUN_DLD_FIXED_SNGL_ARG (fsinh, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
570 @deftypefn {Loadable Function} {@var{y} =} fsinh (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
571 Compute the hyperbolic sine of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
572 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
573 @seealso{fcos, fcosh, fsin, ftan, ftanh}", ::sinh, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
574
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
575 // PKG_ADD: autoload ("ftan", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
576 // PKG_ADD: dispatch ("tan", "ftan", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
577 // PKG_ADD: dispatch ("tan", "ftan", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
578 // PKG_ADD: dispatch ("tan", "ftan", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
579 // PKG_ADD: dispatch ("tan", "ftan", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
580 DEFUN_DLD_FIXED_SNGL_ARG (ftan, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
581 @deftypefn {Loadable Function} {@var{y} =} ftan (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
582 Compute the tan of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
583 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
584 @seealso{fcos, fcosh, fsinh, ftan, ftanh}", ::tan, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
585
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
586 // PKG_ADD: autoload ("ftanh", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
587 // PKG_ADD: dispatch ("tanh", "ftanh", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
588 // PKG_ADD: dispatch ("tanh", "ftanh", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
589 // PKG_ADD: dispatch ("tanh", "ftanh", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
590 // PKG_ADD: dispatch ("tanh", "ftanh", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
591 DEFUN_DLD_FIXED_SNGL_ARG (ftanh, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
592 @deftypefn {Loadable Function} {@var{y} =} ftanh (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
593 Compute the hyperbolic tan of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
594 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
595 @seealso{fcos, fcosh, fsin, fsinh, ftan}", ::tanh, 0, 0, 0, 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
596
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
597 // PKG_ADD: autoload ("fsqrt", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
598 // PKG_ADD: dispatch ("sqrt", "fsqrt", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
599 // PKG_ADD: dispatch ("sqrt", "fsqrt", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
600 // PKG_ADD: dispatch ("sqrt", "fsqrt", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
601 // PKG_ADD: dispatch ("sqrt", "fsqrt", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
602 DEFUN_DLD_FIXED_SNGL_ARG (fsqrt, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
603 @deftypefn {Loadable Function} {@var{y} =} fsqrt (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
604 Compute the square-root of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
605 @end deftypefn", ::sqrt, 0, 0, 1, FixedPoint());
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
606
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
607 // PKG_ADD: autoload ("fexp", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
608 // PKG_ADD: dispatch ("exp", "fexp", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
609 // PKG_ADD: dispatch ("exp", "fexp", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
610 // PKG_ADD: dispatch ("exp", "fexp", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
611 // PKG_ADD: dispatch ("exp", "fexp", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
612 DEFUN_DLD_FIXED_SNGL_ARG (fexp, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
613 @deftypefn {Loadable Function} {@var{y} =} fexp (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
614 Compute the exponential of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
615 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
616 @seealso{log, log10, pow}", ::exp, 0, 0, 0, 0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
617
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
618 // PKG_ADD: autoload ("flog", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
619 // PKG_ADD: dispatch ("log", "flog", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
620 // PKG_ADD: dispatch ("log", "flog", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
621 // PKG_ADD: dispatch ("log", "flog", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
622 // PKG_ADD: dispatch ("log", "flog", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
623 DEFUN_DLD_FIXED_SNGL_ARG (flog, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
624 @deftypefn {Loadable Function} {@var{y} =} flog (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
625 Compute the natural logarithm of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
626 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
627 @seealso{fexp, flog10, fpow}", ::log, 0, 0, 1, FixedPoint());
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
628
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
629 // PKG_ADD: autoload ("flog10", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
630 // PKG_ADD: dispatch ("log10", "flog10", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
631 // PKG_ADD: dispatch ("log10", "flog10", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
632 // PKG_ADD: dispatch ("log10", "flog10", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
633 // PKG_ADD: dispatch ("log10", "flog10", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
634 DEFUN_DLD_FIXED_SNGL_ARG (flog10, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
635 @deftypefn {Loadable Function} {@var{y} =} flog10 (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
636 Compute the base-10 logarithm of the fixed point value @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
637 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
638 @seealso{fexp, flog, fpow}", ::log10, 0, 0, 1, FixedPoint());
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
639
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
640 // PKG_ADD: autoload ("fround", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
641 // PKG_ADD: dispatch ("round", "fround", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
642 // PKG_ADD: dispatch ("round", "fround", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
643 // PKG_ADD: dispatch ("round", "fround", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
644 // PKG_ADD: dispatch ("round", "fround", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
645 DEFUN_DLD_FIXED_SNGL_ARG (fround, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
646 @deftypefn {Loadable Function} {@var{y} =} fround (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
647 Return the rounded value to the nearest integer of @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
648 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
649 @seealso{ffloor, fceil}", ::round, 0, 0, 0, 0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
650
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
651 // PKG_ADD: autoload ("ffloor", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
652 // PKG_ADD: dispatch ("floor", "ffloor", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
653 // PKG_ADD: dispatch ("floor", "ffloor", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
654 // PKG_ADD: dispatch ("floor", "ffloor", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
655 // PKG_ADD: dispatch ("floor", "ffloor", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
656 DEFUN_DLD_FIXED_SNGL_ARG (ffloor, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
657 @deftypefn {Loadable Function} {@var{y} =} ffloor (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
658 Return the largest integer not greater than @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
659 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
660 @seealso{fround, fceil}", ::floor, 0, 0, 0, 0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
661
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
662 // PKG_ADD: autoload ("fceil", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
663 // PKG_ADD: dispatch ("ceil", "fceil", "fixed scalar")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
664 // PKG_ADD: dispatch ("ceil", "fceil", "fixed matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
665 // PKG_ADD: dispatch ("ceil", "fceil", "fixed complex")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
666 // PKG_ADD: dispatch ("ceil", "fceil", "fixed complex matrix")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
667 DEFUN_DLD_FIXED_SNGL_ARG (fceil, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
668 @deftypefn {Loadable Function} {@var{y} =} fceil (@var{x})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
669 Return the smallest integer not less than @var{x}.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
670 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
671 @seealso{fround, ffloor}", ::ceil, 0, 0, 0, 0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
672
2870
96854eb1408c modify macro to aid indexing
adb014
parents: 2605
diff changeset
673 // This macro must start with DEFUN_DLD so that the automatic collection
96854eb1408c modify macro to aid indexing
adb014
parents: 2605
diff changeset
674 // of the function helps can take place!! The second DEFUN_DLD must NOT
96854eb1408c modify macro to aid indexing
adb014
parents: 2605
diff changeset
675 // appear on a new-line, otherwise the indexing script will be confused!!
96854eb1408c modify macro to aid indexing
adb014
parents: 2605
diff changeset
676 #define DEFUN_DLD_FIXED_DIM_ARG(NAME, HELP, FUNC) DEFUN_DLD (NAME, args, nargout, HELP) \
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
677 { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
678 int nargin = args.length(); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
679 octave_value retval; \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
680 if ((nargin != 1 ) && (nargin != 2)) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
681 print_usage (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
682 else { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
683 int dim = (nargin == 1 ? -1 : args(1).int_value(true) - 1); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
684 if (error_state) return retval; \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
685 if (dim < -1 || dim > 1) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
686 error (#NAME ": invalid dimension argument = %d", dim + 1); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
687 return retval; \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
688 } \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
689 if (fixed_type_loaded) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
690 if (args(0).type_id () == octave_fixed::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
691 FixedMatrix f = ((const octave_fixed&) args(0).get_rep()) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
692 .fixed_matrix_value (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
693 retval = new octave_fixed( f .FUNC (dim) (0,0)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
694 } else if (args(0).type_id () == octave_fixed_complex:: \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
695 static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
696 FixedComplexMatrix f = ((const octave_fixed_complex&) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
697 args(0).get_rep()).fixed_complex_matrix_value (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
698 retval = new octave_fixed_complex(f .FUNC (dim) (0,0)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
699 } else if (args(0).type_id () == \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
700 octave_fixed_matrix::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
701 FixedMatrix f = ((const octave_fixed_matrix&) args(0).get_rep()) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
702 .fixed_matrix_value (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
703 retval = new octave_fixed_matrix(f .FUNC (dim)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
704 } else if (args(0).type_id () == \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
705 octave_fixed_complex_matrix::static_type_id ()) { \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
706 FixedComplexMatrix f = ((const octave_fixed_complex_matrix&) \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
707 args(0).get_rep()).fixed_complex_matrix_value (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
708 retval = new octave_fixed_complex_matrix(f .FUNC (dim)); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
709 } else \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
710 print_usage (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
711 } else \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
712 print_usage (); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
713 } \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
714 retval.maybe_mutate(); \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
715 return retval; \
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
716 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
717
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
718 // PKG_ADD: autoload ("fprod", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
719 // PKG_ADD: dispatch ("prod", "fprod", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
720 // PKG_ADD: dispatch ("prod", "fprod", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
721 // PKG_ADD: dispatch ("prod", "fprod", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
722 // PKG_ADD: dispatch ("prod", "fprod", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
723 DEFUN_DLD_FIXED_DIM_ARG (fprod, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
724 @deftypefn {Loadable Function} {@var{y} =} fprod (@var{x},@var{dim})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
725 Product of elements along dimension @var{dim}. If @var{dim} is omitted,\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
726 it defaults to 1 (column-wise products).\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
727 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
728 @seealso{fsum, fsumsq}", prod)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
729
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
730 // PKG_ADD: autoload ("fcumprod", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
731 // PKG_ADD: dispatch ("cumprod", "fcumprod", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
732 // PKG_ADD: dispatch ("cumprod", "fcumprod", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
733 // PKG_ADD: dispatch ("cumprod", "fcumprod", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
734 // PKG_ADD: dispatch ("cumprod", "fcumprod", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
735 DEFUN_DLD_FIXED_DIM_ARG (fcumprod, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
736 @deftypefn {Loadable Function} {@var{y} =} fcumprod (@var{x},@var{dim})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
737 Cumulative product of elements along dimension @var{dim}. If @var{dim}\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
738 is omitted, it defaults to 1 (column-wise cumulative products).\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
739 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
740 @seealso{fcumsum}", cumprod)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
741
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
742 // PKG_ADD: autoload ("fsum", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
743 // PKG_ADD: dispatch ("sum", "fsum", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
744 // PKG_ADD: dispatch ("sum", "fsum", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
745 // PKG_ADD: dispatch ("sum", "fsum", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
746 // PKG_ADD: dispatch ("sum", "fsum", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
747 DEFUN_DLD_FIXED_DIM_ARG (fsum, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
748 @deftypefn {Loadable Function} {@var{y} =} fsum (@var{x},@var{dim})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
749 Sum of elements along dimension @var{dim}. If @var{dim} is omitted, it\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
750 defaults to 1 (column-wise sum).\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
751 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
752 @seealso{fprod, fsumsq}", sum)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
753
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
754 // PKG_ADD: autoload ("fcumsum", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
755 // PKG_ADD: dispatch ("cumsum", "fcumsum", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
756 // PKG_ADD: dispatch ("cumsum", "fcumsum", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
757 // PKG_ADD: dispatch ("cumsum", "fcumsum", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
758 // PKG_ADD: dispatch ("cumsum", "fcumsum", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
759 DEFUN_DLD_FIXED_DIM_ARG (fcumsum, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
760 @deftypefn {Loadable Function} {@var{y} =} fcumsum (@var{x},@var{dim})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
761 Cumulative sum of elements along dimension @var{dim}. If @var{dim}\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
762 is omitted, it defaults to 1 (column-wise cumulative sums).\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
763 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
764 @seealso{fcumprod}", cumsum)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
765
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
766 // PKG_ADD: autoload ("fsumsq", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
767 // PKG_ADD: dispatch ("sumsq", "fsumsq", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
768 // PKG_ADD: dispatch ("sumsq", "fsumsq", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
769 // PKG_ADD: dispatch ("sumsq", "fsumsq", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
770 // PKG_ADD: dispatch ("sumsq", "fsumsq", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
771 DEFUN_DLD_FIXED_DIM_ARG (fsumsq, "-*- texinfo -*-\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
772 @deftypefn {Loadable Function} {@var{y} =} fsumsq (@var{x},@var{dim})\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
773 Sum of squares of elements along dimension @var{dim}. If @var{dim}\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
774 is omitted, it defaults to 1 (column-wise sum of squares).\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
775 This function is equivalent to computing\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
776 @example\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
777 fsum (x .* fconj (x), dim)\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
778 @end example\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
779 but it uses less memory and avoids calling @code{fconj} if @var{x} is real.\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
780 @end deftypefn\n\
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
781 @seealso{fprod, fsum}", sumsq)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
782
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
783 // PKG_ADD: autoload ("freshape", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
784 // PKG_ADD: dispatch ("reshape", "freshape", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
785 // PKG_ADD: dispatch ("reshape", "freshape", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
786 // PKG_ADD: dispatch ("reshape", "freshape", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
787 // PKG_ADD: dispatch ("reshape", "freshape", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
788 DEFUN_DLD (freshape, args, ,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
789 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
790 "@deftypefn {Loadable Function} {} freshape (@var{a}, @var{m}, @var{n})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
791 "Return a fixed matrix with @var{m} rows and @var{n} columns whose elements\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
792 "are taken from the fixed matrix @var{a}. To decide how to order the\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
793 "elements, Octave pretends that the elements of a matrix are stored in\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
794 "column-major order (like Fortran arrays are stored).\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
795 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
796 "For example,\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
797 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
798 "@example\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
799 "freshape (fixed(3, 2, [1, 2, 3, 4]), 2, 2)\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
800 "ans =\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
801 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
802 " 1.00 3.00\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
803 " 2.00 4.00\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
804 "@end example\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
805 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
806 "If the variable @code{do_fortran_indexing} is nonzero, the\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
807 "@code{freshape} function is equivalent to\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
808 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
809 "@example\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
810 "@group\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
811 "retval = fixed(0,0,zeros (m, n));\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
812 "retval (:) = a;\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
813 "@end group\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
814 "@end example\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
815 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
816 "@noindent\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
817 "but it is somewhat less cryptic to use @code{freshape} instead of the\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
818 "colon operator. Note that the total number of elements in the original\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
819 "matrix must match the total number of elements in the new matrix.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
820 "@end deftypefn\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
821 "@seealso{`:' and do_fortran_indexing}")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
822 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
823 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
824 int nargin = args.length ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
825
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
826 if (nargin != 2 && nargin !=3) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
827 error("freshape (a, m, m) or freshape (a, size(b))");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
828 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
829 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
830 int mr = 0, mc = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
831 if (nargin == 2) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
832 RowVector tmp = args(1).row_vector_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
833 if (tmp.length() != 2)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
834 error("freshape: called with 2 args, second must be 2-element vector");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
835 mr = (int)tmp(0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
836 mc = (int)tmp(1);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
837 } else if (nargin == 3) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
838 mr = args(1).nint_value ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
839 mc = args(2).nint_value ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
840 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
841 if (args(0).is_scalar_type())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
842 if (mr != 1 || mc != 1)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
843 error("freshape: sizes must match");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
844 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
845 retval = args(0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
846 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
847 if (args(0).is_complex_type()) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
848 if (fixed_type_loaded &&
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
849 (args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
850 octave_fixed_complex_matrix::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
851 FixedComplexMatrix a = ((const octave_fixed_complex_matrix&)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
852 args(0).get_rep()).fixed_complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
853 int nr = a.rows();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
854 int nc = a.cols();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
855 if ((nr * nc) != (mr * mc))
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
856 error("freshape: sizes must match");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
857 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
858 FixedComplexRowVector tmp1(mr*mc);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
859 for (int i=0;i<nr;i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
860 for (int j=0;j<nc;j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
861 tmp1(i+j*nr) = a(i,j);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
862 FixedComplexMatrix tmp2(mr,mc);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
863 for (int i=0;i<mr;i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
864 for (int j=0;j<mc;j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
865 tmp2(i,j) = tmp1(i+j*mr);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
866 retval = new octave_fixed_complex_matrix(tmp2);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
867 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
868 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
869 gripe_wrong_type_arg ("freshape", args(0));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
870 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
871 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
872 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
873 if (fixed_type_loaded &&
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
874 (args(0).type_id () == octave_fixed_matrix::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
875 FixedMatrix a = ((const octave_fixed_matrix&) args(0).get_rep()).
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
876 fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
877 int nr = a.rows();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
878 int nc = a.cols();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
879 if ((nr * nc) != (mr * mc))
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
880 error("freshape: sizes must match");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
881 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
882 FixedRowVector tmp1(mr*mc);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
883 for (int i=0;i<nr;i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
884 for (int j=0;j<nc;j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
885 tmp1(i+j*nr) = a(i,j);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
886 FixedMatrix tmp2(mr,mc);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
887 for (int i=0;i<mr;i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
888 for (int j=0;j<mc;j++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
889 tmp2(i,j) = tmp1(i+j*mr);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
890 retval = new octave_fixed_matrix(tmp2);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
891 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
892 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
893 gripe_wrong_type_arg ("freshape", args(0));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
894 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
895 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
896 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
897 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
898 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
899 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
900 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
901
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
902 static octave_value
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
903 make_fdiag (const octave_value& a, const octave_value& b)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
904 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
905 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
906
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
907 if (fixed_type_loaded) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
908 if (a.is_complex_type() && ((a.type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
909 octave_fixed_complex::static_type_id ()) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
910 (a.type_id () == octave_fixed_complex_matrix::static_type_id ()))) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
911 FixedComplexMatrix m;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
912 if (a.type_id () == octave_fixed_complex_matrix::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
913 m = ((const octave_fixed_complex_matrix&) a.get_rep())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
914 .fixed_complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
915 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
916 m = ((const octave_fixed_complex&) a.get_rep())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
917 .fixed_complex_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
918
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
919 int k = b.nint_value(true);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
920
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
921 if (! error_state) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
922 int nr = m.rows ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
923 int nc = m.columns ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
924
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
925 if (nr == 0 || nc == 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
926 retval = new octave_fixed_complex_matrix (m);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
927 else if (nr == 1 || nc == 1) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
928 int roff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
929 int coff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
930 if (k > 0) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
931 roff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
932 coff = k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
933 } else if (k < 0) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
934 k = -k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
935 roff = k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
936 coff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
937 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
938
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
939 // Try to be a bit intelligent about the representation of the zeros
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
940 bool same = true;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
941 Complex is = m(0,0).getintsize();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
942 Complex ds = m(0,0).getdecsize();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
943 for (int j = 0; j < nc; j++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
944 for (int i = 0; i < nr; i++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
945 if ((is != m(i,j).getintsize()) || (ds != m(i,j).getdecsize())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
946 same = false;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
947 break;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
948 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
949 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
950 if (!same) break;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
951 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
952
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
953
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
954 if (nr == 1) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
955 int n = nc + k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
956 FixedComplexMatrix r;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
957 if (same)
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
958 r.resize(dim_vector (n,n), FixedPointComplex(is,ds));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
959 else
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
960 r.resize(dim_vector (n,n));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
961 for (int i = 0; i < nc; i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
962 r (i+roff, i+coff) = m (0, i);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
963 retval = new octave_fixed_complex_matrix (r);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
964 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
965 int n = nr + k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
966 FixedComplexMatrix r;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
967 if (same)
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
968 r.resize(dim_vector (n,n), FixedPointComplex(is,ds));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
969 else
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
970 r.resize(dim_vector (n,n));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
971 for (int i = 0; i < nr; i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
972 r (i+roff, i+coff) = m (i, 0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
973 retval = new octave_fixed_complex_matrix (r);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
974 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
975 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
976 FixedComplexColumnVector r = m.diag (k);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
977 if (r.capacity () > 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
978 retval = new octave_fixed_complex_matrix (r);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
979 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
980 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
981 } else if ((a.type_id () == octave_fixed::static_type_id ()) ||
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
982 (a.type_id () == octave_fixed_matrix::static_type_id ())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
983 FixedMatrix m;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
984 if (a.type_id () == octave_fixed_matrix::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
985 m = ((const octave_fixed_matrix&) a.get_rep()).fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
986 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
987 m = ((const octave_fixed&) a.get_rep()).fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
988
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
989 int k = b.nint_value(true);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
990
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
991 if (! error_state) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
992 int nr = m.rows ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
993 int nc = m.columns ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
994
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
995 if (nr == 0 || nc == 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
996 retval = new octave_fixed_matrix (m);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
997 else if (nr == 1 || nc == 1) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
998 int roff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
999 int coff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1000 if (k > 0) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1001 roff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1002 coff = k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1003 } else if (k < 0) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1004 k = -k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1005 roff = k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1006 coff = 0;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1007 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1008
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1009 // Try to be a bit intelligent about the representation of the zeros
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1010 bool same = true;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1011 int is = m(0,0).getintsize();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1012 int ds = m(0,0).getdecsize();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1013 for (int j = 0; j < nc; j++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1014 for (int i = 0; i < nr; i++) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1015 if ((is != m(i,j).getintsize()) || (ds != m(i,j).getdecsize())) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1016 same = false;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1017 break;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1018 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1019 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1020 if (!same) break;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1021 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1022
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1023 if (nr == 1) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1024 int n = nc + k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1025 FixedMatrix r;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1026 if (same)
9481
d84d2fea3c90 Re-enable compilation of fixed package
jordigh
parents: 5248
diff changeset
1027 r.resize(n,n, FixedPoint(is,ds));
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1028 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1029 r.resize(n,n);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1030 for (int i = 0; i < nc; i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1031 r (i+roff, i+coff) = m (0, i);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1032 retval = new octave_fixed_matrix (r);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1033 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1034 int n = nr + k;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1035 FixedMatrix r;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1036 if (same)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1037 r.resize(n,n,FixedPoint(is,ds));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1038 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1039 r.resize(n,n);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1040 for (int i = 0; i < nr; i++)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1041 r (i+roff, i+coff) = m (i, 0);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1042 retval = new octave_fixed_matrix (r);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1043 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1044 } else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1045 FixedColumnVector r = m.diag (k);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1046 if (r.capacity () > 0)
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1047 retval = new octave_fixed_matrix (r);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1048 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1049 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1050 } else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1051 gripe_wrong_type_arg ("fdiag", a);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1052 } else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1053 gripe_wrong_type_arg ("fdiag", a);
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1054 retval.maybe_mutate();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1055 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1056 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1057
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
1058 // PKG_ADD: autoload ("fdiag", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1059 // PKG_ADD: dispatch ("diag", "fdiag", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1060 // PKG_ADD: dispatch ("diag", "fdiag", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1061 // PKG_ADD: dispatch ("diag", "fdiag", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1062 // PKG_ADD: dispatch ("diag", "fdiag", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1063 DEFUN_DLD (fdiag, args, ,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1064 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1065 "@deftypefn {Loadable Function} {} fdiag (@var{v}, @var{k})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1066 "Return a diagonal matrix with fixed point vector @var{v} on diagonal\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1067 "@var{k}. The second argument is optional. If it is positive, the vector is\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1068 "placed on the @var{k}-th super-diagonal. If it is negative, it is placed\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1069 "on the @var{-k}-th sub-diagonal. The default value of @var{k} is 0, and\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1070 "the vector is placed on the main diagonal. For example,\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1071 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1072 "@example\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1073 "fdiag (fixed(3,2,[1, 2, 3]), 1)\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1074 "ans =\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1075 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1076 " 0.00 1.00 0.00 0.00\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1077 " 0.00 0.00 2.00 0.00\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1078 " 0.00 0.00 0.00 3.00\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1079 " 0.00 0.00 0.00 0.00\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1080 "@end example\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1081 "\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1082 "Note that if all of the elements of the original vector have the same fixed\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1083 "point representation, then the zero elements in the matrix are created with\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1084 "the same representation. Otherwise the zero elements are created with the\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1085 "equivalent of the fixed point value @code{fixed(0,0,0)}.n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1086 "@end deftypefn\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1087 "@seealso{diag}")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1088 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1089 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1090
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1091 int nargin = args.length ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1092
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1093 if (nargin == 1 && args(0).is_defined ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1094 retval = make_fdiag (args(0), octave_value(0.));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1095 else if (nargin == 2 && args(0).is_defined () && args(1).is_defined ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1096 retval = make_fdiag (args(0), args(1));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1097 else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1098 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1099
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1100 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1101 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1102
4664
56dd695dd3fe Redistribute toplevel PKG_ADD into the c++ files
adb014
parents: 4404
diff changeset
1103 // PKG_ADD: autoload ("fatan2", "fixed.oct");
2383
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1104 // PKG_ADD: dispatch ("atan2", "fatan2", "fixed scalar");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1105 // PKG_ADD: dispatch ("atan2", "fatan2", "fixed matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1106 // PKG_ADD: dispatch ("atan2", "fatan2", "fixed complex");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1107 // PKG_ADD: dispatch ("atan2", "fatan2", "fixed complex matrix");
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1108 DEFUN_DLD (fatan2, args, ,
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1109 "-*- texinfo -*-\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1110 "@deftypefn {Loadable Function} {} fatan2 (@var{y}, @var{x})\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1111 "Compute atan (Y / X) for corresponding fixed point elements of Y and X.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1112 "The result is in range -pi to pi.\n"
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1113 "@end deftypefn\n")
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1114 {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1115 octave_value retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1116 int nargin = args.length ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1117 if (nargin == 2) {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1118 FixedMatrix a, b;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1119 if (args(0).type_id () == octave_fixed::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1120 a = ((const octave_fixed&)args(0).get_rep()).fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1121 else if (args(0).type_id () == octave_fixed_matrix::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1122 a = ((const octave_fixed_matrix&)args(0).get_rep()).fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1123 else if (args(0).type_id () == octave_fixed_complex::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1124 a = ((const octave_fixed_complex&)args(0).get_rep())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1125 .fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1126 else if (args(0).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1127 octave_fixed_complex_matrix::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1128 a = ((const octave_fixed_complex_matrix&)args(0).get_rep())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1129 .fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1130 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1131 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1132 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1133 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1134 if (args(1).type_id () == octave_fixed::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1135 b = ((const octave_fixed&)args(1).get_rep()).fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1136 else if (args(1).type_id () == octave_fixed_matrix::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1137 b = ((const octave_fixed_matrix&)args(1).get_rep()).fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1138 else if (args(1).type_id () == octave_fixed_complex::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1139 b = ((const octave_fixed_complex&)args(1).get_rep())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1140 .fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1141 else if (args(1).type_id () ==
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1142 octave_fixed_complex_matrix::static_type_id ())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1143 b = ((const octave_fixed_complex_matrix&)args(1).get_rep())
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1144 .fixed_matrix_value();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1145 else {
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1146 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1147 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1148 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1149 retval = new octave_fixed_matrix(atan2(a, b));
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1150 retval.maybe_mutate();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1151 } else
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1152 print_usage ();
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1153
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1154 return retval;
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1155 }
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1156
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1157 /*
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1158 ;;; Local Variables: ***
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1159 ;;; mode: C++ ***
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1160 ;;; End: ***
d1930f8af7ca Changed the directory structure of fixed to match the package system
hauberg
parents:
diff changeset
1161 */