Mercurial > octave-nkf
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) \ |