Mercurial > octave
annotate src/OPERATORS/op-int-conv.cc @ 7789:82be108cc558
First attempt at single precision tyeps
* * *
corrections to qrupdate single precision routines
* * *
prefer demotion to single over promotion to double
* * *
Add single precision support to log2 function
* * *
Trivial PROJECT file update
* * *
Cache optimized hermitian/transpose methods
* * *
Add tests for tranpose/hermitian and ChangeLog entry for new transpose code
author | David Bateman <dbateman@free.fr> |
---|---|
date | Sun, 27 Apr 2008 22:34:17 +0200 |
parents | a1dbe9d80eee |
children | cd90e2842080 |
rev | line source |
---|---|
4901 | 1 /* |
2 | |
7017 | 3 Copyright (C) 2004, 2005, 2007 John W. Eaton |
4901 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
4901 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
4901 | 20 |
21 */ | |
22 | |
23 #ifdef HAVE_CONFIG_H | |
24 #include <config.h> | |
25 #endif | |
26 | |
27 #include "gripes.h" | |
28 #include "oct-obj.h" | |
29 #include "ov.h" | |
30 #include "ov-int8.h" | |
31 #include "ov-int16.h" | |
32 #include "ov-int32.h" | |
33 #include "ov-int64.h" | |
34 #include "ov-uint8.h" | |
35 #include "ov-uint16.h" | |
36 #include "ov-uint32.h" | |
37 #include "ov-uint64.h" | |
4907 | 38 #include "ov-range.h" |
5002 | 39 #include "ov-bool.h" |
40 #include "ov-bool-mat.h" | |
4901 | 41 #include "ov-scalar.h" |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
42 #include "ov-float.h" |
4901 | 43 #include "ov-re-mat.h" |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
44 #include "ov-flt-re-mat.h" |
5032 | 45 #include "ov-str-mat.h" |
4901 | 46 #include "ov-typeinfo.h" |
47 #include "ops.h" | |
48 | |
49 // conversion ops | |
50 | |
51 DEFCONVFN (scalar_to_int8, scalar, int8) | |
52 DEFCONVFN (scalar_to_int16, scalar, int16) | |
53 DEFCONVFN (scalar_to_int32, scalar, int32) | |
54 DEFCONVFN (scalar_to_int64, scalar, int64) | |
55 | |
56 DEFCONVFN (scalar_to_uint8, scalar, uint8) | |
57 DEFCONVFN (scalar_to_uint16, scalar, uint16) | |
58 DEFCONVFN (scalar_to_uint32, scalar, uint32) | |
59 DEFCONVFN (scalar_to_uint64, scalar, uint64) | |
60 | |
61 DEFCONVFN (matrix_to_int8, matrix, int8) | |
62 DEFCONVFN (matrix_to_int16, matrix, int16) | |
63 DEFCONVFN (matrix_to_int32, matrix, int32) | |
64 DEFCONVFN (matrix_to_int64, matrix, int64) | |
65 | |
66 DEFCONVFN (matrix_to_uint8, matrix, uint8) | |
67 DEFCONVFN (matrix_to_uint16, matrix, uint16) | |
68 DEFCONVFN (matrix_to_uint32, matrix, uint32) | |
69 DEFCONVFN (matrix_to_uint64, matrix, uint64) | |
70 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
71 DEFCONVFN (float_scalar_to_int8, float_scalar, int8) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
72 DEFCONVFN (float_scalar_to_int16, float_scalar, int16) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
73 DEFCONVFN (float_scalar_to_int32, float_scalar, int32) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
74 DEFCONVFN (float_scalar_to_int64, float_scalar, int64) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
75 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
76 DEFCONVFN (float_scalar_to_uint8, float_scalar, uint8) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
77 DEFCONVFN (float_scalar_to_uint16, float_scalar, uint16) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
78 DEFCONVFN (float_scalar_to_uint32, float_scalar, uint32) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
79 DEFCONVFN (float_scalar_to_uint64, float_scalar, uint64) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
80 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
81 DEFCONVFN (float_matrix_to_int8, float_matrix, int8) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
82 DEFCONVFN (float_matrix_to_int16, float_matrix, int16) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
83 DEFCONVFN (float_matrix_to_int32, float_matrix, int32) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
84 DEFCONVFN (float_matrix_to_int64, float_matrix, int64) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
85 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
86 DEFCONVFN (float_matrix_to_uint8, float_matrix, uint8) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
87 DEFCONVFN (float_matrix_to_uint16, float_matrix, uint16) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
88 DEFCONVFN (float_matrix_to_uint32, float_matrix, uint32) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
89 DEFCONVFN (float_matrix_to_uint64, float_matrix, uint64) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
90 |
5002 | 91 DEFCONVFN (bool_to_int8, bool, int8) |
92 DEFCONVFN (bool_to_int16, bool, int16) | |
93 DEFCONVFN (bool_to_int32, bool, int32) | |
94 DEFCONVFN (bool_to_int64, bool, int64) | |
95 | |
96 DEFCONVFN (bool_to_uint8, bool, uint8) | |
97 DEFCONVFN (bool_to_uint16, bool, uint16) | |
98 DEFCONVFN (bool_to_uint32, bool, uint32) | |
99 DEFCONVFN (bool_to_uint64, bool, uint64) | |
100 | |
101 DEFCONVFN (bool_matrix_to_int8, bool_matrix, int8) | |
102 DEFCONVFN (bool_matrix_to_int16, bool_matrix, int16) | |
103 DEFCONVFN (bool_matrix_to_int32, bool_matrix, int32) | |
104 DEFCONVFN (bool_matrix_to_int64, bool_matrix, int64) | |
105 | |
106 DEFCONVFN (bool_matrix_to_uint8, bool_matrix, uint8) | |
107 DEFCONVFN (bool_matrix_to_uint16, bool_matrix, uint16) | |
108 DEFCONVFN (bool_matrix_to_uint32, bool_matrix, uint32) | |
109 DEFCONVFN (bool_matrix_to_uint64, bool_matrix, uint64) | |
110 | |
6600 | 111 DEFSTRINTCONVFN (char_matrix_sq_str_to_int8, int8) |
112 DEFSTRINTCONVFN (char_matrix_sq_str_to_int16, int16) | |
113 DEFSTRINTCONVFN (char_matrix_sq_str_to_int32, int32) | |
114 DEFSTRINTCONVFN (char_matrix_sq_str_to_int64, int64) | |
115 | |
116 DEFSTRINTCONVFN (char_matrix_sq_str_to_uint8, uint8) | |
117 DEFSTRINTCONVFN (char_matrix_sq_str_to_uint16, uint16) | |
118 DEFSTRINTCONVFN (char_matrix_sq_str_to_uint32, uint32) | |
119 DEFSTRINTCONVFN (char_matrix_sq_str_to_uint64, uint64) | |
5032 | 120 |
6600 | 121 DEFSTRINTCONVFN (char_matrix_dq_str_to_int8, int8) |
122 DEFSTRINTCONVFN (char_matrix_dq_str_to_int16, int16) | |
123 DEFSTRINTCONVFN (char_matrix_dq_str_to_int32, int32) | |
124 DEFSTRINTCONVFN (char_matrix_dq_str_to_int64, int64) | |
125 | |
126 DEFSTRINTCONVFN (char_matrix_dq_str_to_uint8, uint8) | |
127 DEFSTRINTCONVFN (char_matrix_dq_str_to_uint16, uint16) | |
128 DEFSTRINTCONVFN (char_matrix_dq_str_to_uint32, uint32) | |
129 DEFSTRINTCONVFN (char_matrix_dq_str_to_uint64, uint64) | |
5032 | 130 |
4907 | 131 DEFCONVFN (range_to_int8, range, int8) |
132 DEFCONVFN (range_to_int16, range, int16) | |
133 DEFCONVFN (range_to_int32, range, int32) | |
134 DEFCONVFN (range_to_int64, range, int64) | |
135 | |
136 DEFCONVFN (range_to_uint8, range, uint8) | |
137 DEFCONVFN (range_to_uint16, range, uint16) | |
138 DEFCONVFN (range_to_uint32, range, uint32) | |
139 DEFCONVFN (range_to_uint64, range, uint64) | |
140 | |
4901 | 141 #define INT_CONV_FUNCTIONS(tfrom) \ |
142 DEFCONVFN2 (tfrom ## _scalar_to_int8, tfrom, scalar, int8) \ | |
143 DEFCONVFN2 (tfrom ## _scalar_to_int16, tfrom, scalar, int16) \ | |
144 DEFCONVFN2 (tfrom ## _scalar_to_int32, tfrom, scalar, int32) \ | |
145 DEFCONVFN2 (tfrom ## _scalar_to_int64, tfrom, scalar, int64) \ | |
146 \ | |
4952 | 147 DEFCONVFN2 (tfrom ## _scalar_to_uint8, tfrom, scalar, uint8) \ |
148 DEFCONVFN2 (tfrom ## _scalar_to_uint16, tfrom, scalar, uint16) \ | |
149 DEFCONVFN2 (tfrom ## _scalar_to_uint32, tfrom, scalar, uint32) \ | |
150 DEFCONVFN2 (tfrom ## _scalar_to_uint64, tfrom, scalar, uint64) \ | |
4901 | 151 \ |
4952 | 152 DEFCONVFN2 (tfrom ## _matrix_to_int8, tfrom, matrix, int8) \ |
153 DEFCONVFN2 (tfrom ## _matrix_to_int16, tfrom, matrix, int16) \ | |
154 DEFCONVFN2 (tfrom ## _matrix_to_int32, tfrom, matrix, int32) \ | |
155 DEFCONVFN2 (tfrom ## _matrix_to_int64, tfrom, matrix, int64) \ | |
4901 | 156 \ |
157 DEFCONVFN2 (tfrom ## _matrix_to_uint8, tfrom, matrix, uint8) \ | |
158 DEFCONVFN2 (tfrom ## _matrix_to_uint16, tfrom, matrix, uint16) \ | |
159 DEFCONVFN2 (tfrom ## _matrix_to_uint32, tfrom, matrix, uint32) \ | |
160 DEFCONVFN2 (tfrom ## _matrix_to_uint64, tfrom, matrix, uint64) | |
161 | |
162 INT_CONV_FUNCTIONS (int8) | |
163 INT_CONV_FUNCTIONS (int16) | |
164 INT_CONV_FUNCTIONS (int32) | |
165 INT_CONV_FUNCTIONS (int64) | |
166 | |
167 INT_CONV_FUNCTIONS (uint8) | |
168 INT_CONV_FUNCTIONS (uint16) | |
169 INT_CONV_FUNCTIONS (uint32) | |
170 INT_CONV_FUNCTIONS (uint64) | |
171 | |
172 #define INSTALL_INT_CONV_FUNCTIONS(tfrom) \ | |
173 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_int8_matrix, tfrom ## _scalar_to_int8) \ | |
174 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_int16_matrix, tfrom ## _scalar_to_int16) \ | |
175 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_int32_matrix, tfrom ## _scalar_to_int32) \ | |
176 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_int64_matrix, tfrom ## _scalar_to_int64) \ | |
177 \ | |
178 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_uint8_matrix, tfrom ## _scalar_to_uint8) \ | |
179 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_uint16_matrix, tfrom ## _scalar_to_uint16) \ | |
180 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_uint32_matrix, tfrom ## _scalar_to_uint32) \ | |
181 INSTALL_CONVOP (octave_ ## tfrom ## _scalar, octave_uint64_matrix, tfrom ## _scalar_to_uint64) \ | |
182 \ | |
183 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_int8_matrix, tfrom ## _matrix_to_int8) \ | |
184 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_int16_matrix, tfrom ## _matrix_to_int16) \ | |
185 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_int32_matrix, tfrom ## _matrix_to_int32) \ | |
186 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_int64_matrix, tfrom ## _matrix_to_int64) \ | |
187 \ | |
188 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_uint8_matrix, tfrom ## _matrix_to_uint8) \ | |
189 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_uint16_matrix, tfrom ## _matrix_to_uint16) \ | |
190 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_uint32_matrix, tfrom ## _matrix_to_uint32) \ | |
4907 | 191 INSTALL_CONVOP (octave_ ## tfrom ## _matrix, octave_uint64_matrix, tfrom ## _matrix_to_uint64) |
192 | |
193 #define INSTALL_CONVOPS(tfrom) \ | |
194 INSTALL_CONVOP (octave_ ## tfrom, octave_int8_matrix, tfrom ## _to_int8) \ | |
195 INSTALL_CONVOP (octave_ ## tfrom, octave_int16_matrix, tfrom ## _to_int16) \ | |
196 INSTALL_CONVOP (octave_ ## tfrom, octave_int32_matrix, tfrom ## _to_int32) \ | |
197 INSTALL_CONVOP (octave_ ## tfrom, octave_int64_matrix, tfrom ## _to_int64) \ | |
198 \ | |
199 INSTALL_CONVOP (octave_ ## tfrom, octave_uint8_matrix, tfrom ## _to_uint8) \ | |
200 INSTALL_CONVOP (octave_ ## tfrom, octave_uint16_matrix, tfrom ## _to_uint16) \ | |
201 INSTALL_CONVOP (octave_ ## tfrom, octave_uint32_matrix, tfrom ## _to_uint32) \ | |
202 INSTALL_CONVOP (octave_ ## tfrom, octave_uint64_matrix, tfrom ## _to_uint64) | |
4901 | 203 |
204 void | |
205 install_int_conv_ops (void) | |
206 { | |
4907 | 207 INSTALL_CONVOPS (scalar) |
208 INSTALL_CONVOPS (matrix) | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
209 INSTALL_CONVOPS (float_scalar) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
210 INSTALL_CONVOPS (float_matrix) |
5002 | 211 INSTALL_CONVOPS (bool) |
212 INSTALL_CONVOPS (bool_matrix) | |
4907 | 213 INSTALL_CONVOPS (range) |
6600 | 214 INSTALL_CONVOPS (char_matrix_sq_str) |
215 INSTALL_CONVOPS (char_matrix_dq_str) | |
4901 | 216 |
217 INSTALL_INT_CONV_FUNCTIONS (int8) | |
218 INSTALL_INT_CONV_FUNCTIONS (int16) | |
219 INSTALL_INT_CONV_FUNCTIONS (int32) | |
220 INSTALL_INT_CONV_FUNCTIONS (int64) | |
221 | |
222 INSTALL_INT_CONV_FUNCTIONS (uint8) | |
223 INSTALL_INT_CONV_FUNCTIONS (uint16) | |
224 INSTALL_INT_CONV_FUNCTIONS (uint32) | |
225 INSTALL_INT_CONV_FUNCTIONS (uint64) | |
226 } | |
227 | |
228 /* | |
229 ;;; Local Variables: *** | |
230 ;;; mode: C++ *** | |
231 ;;; End: *** | |
232 */ |