comparison src/OPERATORS/op-int.h @ 10405:cc69a17ec801

remove integer math warnings
author Jaroslav Hajek <highegg@gmail.com>
date Tue, 09 Mar 2010 08:06:30 +0100
parents ac4b97c6bf8b
children fd0a3ac60b0e
comparison
equal deleted inserted replaced
10404:b40a5fd3af41 10405:cc69a17ec801
26 BINOPDECL (name, a1, a2) \ 26 BINOPDECL (name, a1, a2) \
27 { \ 27 { \
28 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \ 28 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
29 octave_value retval = octave_value \ 29 octave_value retval = octave_value \
30 (v1.t1 ## _value () op v2.t2 ## _value ()); \ 30 (v1.t1 ## _value () op v2.t2 ## _value ()); \
31 if (octave_ ## t3 ::get_math_trunc_flag ()) \
32 gripe_binop_integer_math_truncated (#op, v1.type_name (). c_str (), \
33 v2.type_name (). c_str ()); \
34 octave_ ## t3 ::clear_conv_flag (); \
35 return retval; \ 31 return retval; \
36 } 32 }
37 33
38 #define DEFINTNDBINOP_OP(name, t1, t2, e1, e2, op, t3) \ 34 #define DEFINTNDBINOP_OP(name, t1, t2, e1, e2, op, t3) \
39 BINOPDECL (name, a1, a2) \ 35 BINOPDECL (name, a1, a2) \
40 { \ 36 { \
41 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \ 37 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
42 octave_value retval = octave_value \ 38 octave_value retval = octave_value \
43 (v1.e1 ## _value () op v2.e2 ## _value ()); \ 39 (v1.e1 ## _value () op v2.e2 ## _value ()); \
44 if (octave_ ## t3 ::get_math_trunc_flag ()) \
45 gripe_binop_integer_math_truncated (#op, v1.type_name (). c_str (), \
46 v2.type_name (). c_str ()); \
47 octave_ ## t3 ::clear_conv_flag (); \
48 return retval; \ 40 return retval; \
49 } 41 }
50 42
51 #define DEFINTBINOP_FN(name, t1, t2, f, t3, op) \ 43 #define DEFINTBINOP_FN(name, t1, t2, f, t3, op) \
52 BINOPDECL (name, a1, a2) \ 44 BINOPDECL (name, a1, a2) \
53 { \ 45 { \
54 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \ 46 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
55 octave_value retval = octave_value (f (v1.t1 ## _value (), v2.t2 ## _value ())); \ 47 octave_value retval = octave_value (f (v1.t1 ## _value (), v2.t2 ## _value ())); \
56 if (octave_ ## t3 ::get_math_trunc_flag ()) \
57 gripe_binop_integer_math_truncated (#op, v1.type_name (). c_str (), \
58 v2.type_name (). c_str ()); \
59 octave_ ## t3 ::clear_conv_flag (); \
60 return retval; \ 48 return retval; \
61 } 49 }
62 50
63 #define DEFINTNDBINOP_FN(name, t1, t2, e1, e2, f, t3, op) \ 51 #define DEFINTNDBINOP_FN(name, t1, t2, e1, e2, f, t3, op) \
64 BINOPDECL (name, a1, a2) \ 52 BINOPDECL (name, a1, a2) \
65 { \ 53 { \
66 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \ 54 CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
67 octave_value retval = octave_value (f (v1.e1 ## _value (), v2.e2 ## _value ())); \ 55 octave_value retval = octave_value (f (v1.e1 ## _value (), v2.e2 ## _value ())); \
68 if (octave_ ## t3 ::get_math_trunc_flag ()) \
69 gripe_binop_integer_math_truncated (#op, v1.type_name (). c_str (), \
70 v2.type_name (). c_str ()); \
71 octave_ ## t3 ::clear_conv_flag (); \
72 return retval; \ 56 return retval; \
73 } 57 }
74 58
75 #define OCTAVE_CONCAT_FN2(T1, T2) \ 59 #define OCTAVE_CONCAT_FN2(T1, T2) \
76 DEFNDCATOP_FN2 (T1 ## _ ## T2 ## _s_s, T1 ## _scalar, T2 ## _scalar, , T1 ## NDArray, T1 ## _array, T2 ## _array, concat) \ 60 DEFNDCATOP_FN2 (T1 ## _ ## T2 ## _s_s, T1 ## _scalar, T2 ## _scalar, , T1 ## NDArray, T1 ## _array, T2 ## _array, concat) \
174 DEFUNOP_OP (s_uplus, TYPE ## _scalar, /* no-op */) \ 158 DEFUNOP_OP (s_uplus, TYPE ## _scalar, /* no-op */) \
175 DEFUNOP (s_uminus, TYPE ## _scalar) \ 159 DEFUNOP (s_uminus, TYPE ## _scalar) \
176 { \ 160 { \
177 CAST_UNOP_ARG (const octave_ ## TYPE ## _scalar &); \ 161 CAST_UNOP_ARG (const octave_ ## TYPE ## _scalar &); \
178 octave_value retval = octave_value (- v. TYPE ## _scalar_value ()); \ 162 octave_value retval = octave_value (- v. TYPE ## _scalar_value ()); \
179 if (octave_ ## TYPE ::get_math_trunc_flag ()) \
180 gripe_unop_integer_math_truncated ("-", v.type_name (). c_str ()); \
181 octave_ ## TYPE ::clear_conv_flag (); \
182 return retval; \ 163 return retval; \
183 } \ 164 } \
184 DEFUNOP_OP (s_transpose, TYPE ## _scalar, /* no-op */) \ 165 DEFUNOP_OP (s_transpose, TYPE ## _scalar, /* no-op */) \
185 DEFUNOP_OP (s_hermitian, TYPE ## _scalar, /* no-op */) \ 166 DEFUNOP_OP (s_hermitian, TYPE ## _scalar, /* no-op */) \
186 \ 167 \
200 \ 181 \
201 if (! v2.T2 ## scalar_value ()) \ 182 if (! v2.T2 ## scalar_value ()) \
202 gripe_divide_by_zero (); \ 183 gripe_divide_by_zero (); \
203 \ 184 \
204 octave_value retval = octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \ 185 octave_value retval = octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \
205 if (octave_ ## T3 ::get_math_trunc_flag ()) \
206 gripe_binop_integer_math_truncated ("/", v1.type_name (). c_str (), \
207 v2.type_name (). c_str ()); \
208 octave_ ## T3 ::clear_conv_flag (); \
209 return retval; \ 186 return retval; \
210 } \ 187 } \
211 \ 188 \
212 DEFINTBINOP_FN (PFX ## _pow, T1 ## scalar, T2 ## scalar, xpow, T3, ^) \ 189 DEFINTBINOP_FN (PFX ## _pow, T1 ## scalar, T2 ## scalar, xpow, T3, ^) \
213 \ 190 \
217 \ 194 \
218 if (! v1.T1 ## scalar_value ()) \ 195 if (! v1.T1 ## scalar_value ()) \
219 gripe_divide_by_zero (); \ 196 gripe_divide_by_zero (); \
220 \ 197 \
221 octave_value retval = octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \ 198 octave_value retval = octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \
222 if (octave_ ## T3 ::get_math_trunc_flag ()) \
223 gripe_binop_integer_math_truncated ("\\", v1.type_name (). c_str (), \
224 v2.type_name (). c_str ()); \
225 octave_ ## T3 ::clear_conv_flag (); \
226 return retval; \ 199 return retval; \
227 } \ 200 } \
228 \ 201 \
229 DEFINTBINOP_OP (PFX ## _el_mul, T1 ## scalar, T2 ## scalar, *, T3) \ 202 DEFINTBINOP_OP (PFX ## _el_mul, T1 ## scalar, T2 ## scalar, *, T3) \
230 \ 203 \
234 \ 207 \
235 if (! v2.T2 ## scalar_value ()) \ 208 if (! v2.T2 ## scalar_value ()) \
236 gripe_divide_by_zero (); \ 209 gripe_divide_by_zero (); \
237 \ 210 \
238 octave_value retval = octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \ 211 octave_value retval = octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \
239 if (octave_ ## T3 ::get_math_trunc_flag ()) \
240 gripe_binop_integer_math_truncated (".\\", v1.type_name (). c_str (), \
241 v2.type_name (). c_str ()); \
242 octave_ ## T3 ::clear_conv_flag (); \
243 return retval; \ 212 return retval; \
244 } \ 213 } \
245 \ 214 \
246 DEFINTBINOP_FN (PFX ## _el_pow, T1 ## scalar, T2 ## scalar, xpow, T3, .^) \ 215 DEFINTBINOP_FN (PFX ## _el_pow, T1 ## scalar, T2 ## scalar, xpow, T3, .^) \
247 \ 216 \
251 \ 220 \
252 if (! v1.T1 ## scalar_value ()) \ 221 if (! v1.T1 ## scalar_value ()) \
253 gripe_divide_by_zero (); \ 222 gripe_divide_by_zero (); \
254 \ 223 \
255 octave_value retval = octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \ 224 octave_value retval = octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \
256 if (octave_ ## T3 ::get_math_trunc_flag ()) \
257 gripe_binop_integer_math_truncated (".\\", v1.type_name (). c_str (), \
258 v2.type_name (). c_str ()); \
259 octave_ ## T3 ::clear_conv_flag (); \
260 return retval; \ 225 return retval; \
261 } \ 226 } \
262 227
263 #define OCTAVE_SS_INT_BOOL_OPS(PFX, T1, T2, Z1, Z2) \ 228 #define OCTAVE_SS_INT_BOOL_OPS(PFX, T1, T2, Z1, Z2) \
264 DEFBINOP (PFX ## _el_and, T2, T2) \ 229 DEFBINOP (PFX ## _el_and, T2, T2) \
358 \ 323 \
359 if (! v1.TS ## scalar_value ()) \ 324 if (! v1.TS ## scalar_value ()) \
360 gripe_divide_by_zero (); \ 325 gripe_divide_by_zero (); \
361 \ 326 \
362 octave_value retval = octave_value (v2.TS ## scalar_value () / v1.TS ## scalar_value ()); \ 327 octave_value retval = octave_value (v2.TS ## scalar_value () / v1.TS ## scalar_value ()); \
363 if (octave_ ## TI ::get_math_trunc_flag ()) \
364 gripe_binop_integer_math_truncated ("\\", v1.type_name (). c_str (), \
365 v2.type_name (). c_str ()); \
366 octave_ ## TI ::clear_conv_flag (); \
367 return retval; \ 328 return retval; \
368 } \ 329 } \
369 \ 330 \
370 DEFINTNDBINOP_OP (PFX ## _el_mul, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, *, TI) \ 331 DEFINTNDBINOP_OP (PFX ## _el_mul, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, *, TI) \
371 DEFBINOP (PFX ## _el_div, TS ## scalar, TM ## matrix) \ 332 DEFBINOP (PFX ## _el_div, TS ## scalar, TM ## matrix) \
372 { \ 333 { \
373 CAST_BINOP_ARGS (const octave_ ## TS ## scalar&, const octave_ ## TM ## matrix&); \ 334 CAST_BINOP_ARGS (const octave_ ## TS ## scalar&, const octave_ ## TM ## matrix&); \
374 \ 335 \
375 octave_value retval = octave_value (v1.TS ## scalar_value () / v2.TM ## array_value ()); \ 336 octave_value retval = octave_value (v1.TS ## scalar_value () / v2.TM ## array_value ()); \
376 if (octave_ ## TI ::get_math_trunc_flag ()) \
377 gripe_binop_integer_math_truncated (".\\", v1.type_name (). c_str (), \
378 v2.type_name (). c_str ()); \
379 octave_ ## TI ::clear_conv_flag (); \
380 return retval; \ 337 return retval; \
381 } \ 338 } \
382 \ 339 \
383 DEFINTNDBINOP_FN (PFX ## _el_pow, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, elem_xpow, TI, .^) \ 340 DEFINTNDBINOP_FN (PFX ## _el_pow, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, elem_xpow, TI, .^) \
384 \ 341 \
388 \ 345 \
389 if (! v1.TS ## scalar_value ()) \ 346 if (! v1.TS ## scalar_value ()) \
390 gripe_divide_by_zero (); \ 347 gripe_divide_by_zero (); \
391 \ 348 \
392 octave_value retval = octave_value (v2.TM ## array_value () / v1.TS ## scalar_value ()); \ 349 octave_value retval = octave_value (v2.TM ## array_value () / v1.TS ## scalar_value ()); \
393 if (octave_ ## TI ::get_math_trunc_flag ()) \
394 gripe_binop_integer_math_truncated (".\\", v1.type_name (). c_str (), \
395 v2.type_name (). c_str ()); \
396 octave_ ## TI ::clear_conv_flag (); \
397 return retval; \ 350 return retval; \
398 } 351 }
399 352
400 #define OCTAVE_SM_INT_CMP_OPS(PFX, TS, TM) \ 353 #define OCTAVE_SM_INT_CMP_OPS(PFX, TS, TM) \
401 DEFNDBINOP_FN (PFX ## _lt, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, mx_el_lt) \ 354 DEFNDBINOP_FN (PFX ## _lt, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, mx_el_lt) \
515 \ 468 \
516 if (! v2.TS ## scalar_value ()) \ 469 if (! v2.TS ## scalar_value ()) \
517 gripe_divide_by_zero (); \ 470 gripe_divide_by_zero (); \
518 \ 471 \
519 octave_value retval = octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \ 472 octave_value retval = octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \
520 if (octave_ ## TI ::get_math_trunc_flag ()) \
521 gripe_binop_integer_math_truncated ("/", v1.type_name (). c_str (), \
522 v2.type_name (). c_str ()); \
523 octave_ ## TI ::clear_conv_flag (); \
524 return retval; \ 473 return retval; \
525 } \ 474 } \
526 \ 475 \
527 /* DEFBINOP_FN (PFX ## _pow, TM ## matrix, TS ## scalar, xpow) */ \ 476 /* DEFBINOP_FN (PFX ## _pow, TM ## matrix, TS ## scalar, xpow) */ \
528 \ 477 \
544 \ 493 \
545 if (! v2.TS ## scalar_value ()) \ 494 if (! v2.TS ## scalar_value ()) \
546 gripe_divide_by_zero (); \ 495 gripe_divide_by_zero (); \
547 \ 496 \
548 octave_value retval = octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \ 497 octave_value retval = octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \
549 if (octave_ ## TI ::get_math_trunc_flag ()) \
550 gripe_binop_integer_math_truncated ("./", v1.type_name (). c_str (), \
551 v2.type_name (). c_str ()); \
552 octave_ ## TI ::clear_conv_flag (); \
553 return retval; \ 498 return retval; \
554 } \ 499 } \
555 \ 500 \
556 DEFINTNDBINOP_FN (PFX ## _el_pow, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, elem_xpow, TI, .^) \ 501 DEFINTNDBINOP_FN (PFX ## _el_pow, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, elem_xpow, TI, .^) \
557 \ 502 \
558 DEFBINOP (PFX ## _el_ldiv, TM ## matrix, TS ## scalar) \ 503 DEFBINOP (PFX ## _el_ldiv, TM ## matrix, TS ## scalar) \
559 { \ 504 { \
560 CAST_BINOP_ARGS (const octave_ ## TM ## matrix&, const octave_ ## TS ## scalar&); \ 505 CAST_BINOP_ARGS (const octave_ ## TM ## matrix&, const octave_ ## TS ## scalar&); \
561 \ 506 \
562 octave_value retval = v2.TS ## scalar_value () / v1.TM ## array_value (); \ 507 octave_value retval = v2.TS ## scalar_value () / v1.TM ## array_value (); \
563 if (octave_ ## TI ::get_math_trunc_flag ()) \
564 gripe_binop_integer_math_truncated (".^", v1.type_name (). c_str (), \
565 v2.type_name (). c_str ()); \
566 octave_ ## TI ::clear_conv_flag (); \
567 return retval; \ 508 return retval; \
568 } 509 }
569 510
570 #define OCTAVE_MS_INT_CMP_OPS(PFX, TM, TS) \ 511 #define OCTAVE_MS_INT_CMP_OPS(PFX, TM, TS) \
571 DEFNDBINOP_FN (PFX ## _lt, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, mx_el_lt) \ 512 DEFNDBINOP_FN (PFX ## _lt, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, mx_el_lt) \
676 DEFNDUNOP_OP (m_uplus, TYPE ## _matrix, TYPE ## _array, /* no-op */) \ 617 DEFNDUNOP_OP (m_uplus, TYPE ## _matrix, TYPE ## _array, /* no-op */) \
677 DEFUNOP (m_uminus, TYPE ## _matrix) \ 618 DEFUNOP (m_uminus, TYPE ## _matrix) \
678 { \ 619 { \
679 CAST_UNOP_ARG (const octave_ ## TYPE ## _matrix &); \ 620 CAST_UNOP_ARG (const octave_ ## TYPE ## _matrix &); \
680 octave_value retval = octave_value (- v. TYPE ## _array_value ()); \ 621 octave_value retval = octave_value (- v. TYPE ## _array_value ()); \
681 if (octave_ ## TYPE ::get_math_trunc_flag ()) \
682 gripe_unop_integer_math_truncated ("-", v.type_name (). c_str ()); \
683 octave_ ## TYPE ::clear_conv_flag (); \
684 return retval; \ 622 return retval; \
685 } \ 623 } \
686 \ 624 \
687 DEFUNOP (m_transpose, TYPE ## _matrix) \ 625 DEFUNOP (m_transpose, TYPE ## _matrix) \
688 { \ 626 { \
727 DEFBINOP (PFX ## _el_ldiv, T1 ## matrix, T2 ## matrix) \ 665 DEFBINOP (PFX ## _el_ldiv, T1 ## matrix, T2 ## matrix) \
728 { \ 666 { \
729 CAST_BINOP_ARGS (const octave_ ## T1 ## matrix&, const octave_ ## T2 ## matrix&); \ 667 CAST_BINOP_ARGS (const octave_ ## T1 ## matrix&, const octave_ ## T2 ## matrix&); \
730 \ 668 \
731 octave_value retval = octave_value (quotient (v2.T2 ## array_value (), v1.T1 ## array_value ())); \ 669 octave_value retval = octave_value (quotient (v2.T2 ## array_value (), v1.T1 ## array_value ())); \
732 if (octave_ ## T3 ::get_math_trunc_flag ()) \
733 gripe_binop_integer_math_truncated (".\\", v1.type_name (). c_str (), \
734 v2.type_name (). c_str ()); \
735 octave_ ## T3 ::clear_conv_flag (); \
736 return retval; \ 670 return retval; \
737 } 671 }
738 672
739 #define OCTAVE_MM_INT_CMP_OPS(PFX, T1, T2) \ 673 #define OCTAVE_MM_INT_CMP_OPS(PFX, T1, T2) \
740 DEFNDBINOP_FN (PFX ## _lt, T1 ## matrix, T2 ## matrix, T1 ## array, T2 ## array, mx_el_lt) \ 674 DEFNDBINOP_FN (PFX ## _lt, T1 ## matrix, T2 ## matrix, T1 ## array, T2 ## array, mx_el_lt) \