comparison src/OPERATORS/op-int.h @ 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 43e3efb2cbc2
children e998e81224b5
comparison
equal deleted inserted replaced
7788:45f5faba05a2 7789:82be108cc558
55 #define OCTAVE_INSTALL_INT_DOUBLE_CONCAT_FN(TYPE) \ 55 #define OCTAVE_INSTALL_INT_DOUBLE_CONCAT_FN(TYPE) \
56 INSTALL_CATOP (octave_ ## TYPE ## _scalar, octave_scalar, TYPE ## _ ## double ## _s_s) \ 56 INSTALL_CATOP (octave_ ## TYPE ## _scalar, octave_scalar, TYPE ## _ ## double ## _s_s) \
57 INSTALL_CATOP (octave_ ## TYPE ## _scalar, octave_matrix, TYPE ## _ ## double ## _s_m) \ 57 INSTALL_CATOP (octave_ ## TYPE ## _scalar, octave_matrix, TYPE ## _ ## double ## _s_m) \
58 INSTALL_CATOP (octave_ ## TYPE ## _matrix, octave_scalar, TYPE ## _ ## double ## _m_s) \ 58 INSTALL_CATOP (octave_ ## TYPE ## _matrix, octave_scalar, TYPE ## _ ## double ## _m_s) \
59 INSTALL_CATOP (octave_ ## TYPE ## _matrix, octave_matrix, TYPE ## _ ## double ## _m_m) 59 INSTALL_CATOP (octave_ ## TYPE ## _matrix, octave_matrix, TYPE ## _ ## double ## _m_m)
60
61 #define OCTAVE_FLOAT_INT_CONCAT_FN(TYPE) \
62 DEFNDCATOP_FN2 (float ## _ ## TYPE ## _s_s, float_scalar, TYPE ## _scalar, TYPE ## NDArray, , float_array, TYPE ## _array, concat) \
63 DEFNDCATOP_FN2 (float ## _ ## TYPE ## _s_m, float_scalar, TYPE ## _matrix, TYPE ## NDArray, , float_array, TYPE ## _array, concat) \
64 DEFNDCATOP_FN2 (float ## _ ## TYPE ## _m_s, float_matrix, TYPE ## _scalar, TYPE ## NDArray, , float_array, TYPE ## _array, concat) \
65 DEFNDCATOP_FN2 (float ## _ ## TYPE ## _m_m, float_matrix, TYPE ## _matrix, TYPE ## NDArray, , float_array, TYPE ## _array, concat)
66
67 #define OCTAVE_INSTALL_FLOAT_INT_CONCAT_FN(TYPE) \
68 INSTALL_CATOP (octave_float_scalar, octave_ ## TYPE ## _scalar, float ## _ ## TYPE ## _s_s) \
69 INSTALL_CATOP (octave_float_scalar, octave_ ## TYPE ## _matrix, float ## _ ## TYPE ## _s_m) \
70 INSTALL_CATOP (octave_float_matrix, octave_ ## TYPE ## _scalar, float ## _ ## TYPE ## _m_s) \
71 INSTALL_CATOP (octave_float_matrix, octave_ ## TYPE ## _matrix, float ## _ ## TYPE ## _m_m)
72
73 #define OCTAVE_INT_FLOAT_CONCAT_FN(TYPE) \
74 DEFNDCATOP_FN2 (TYPE ## _ ## float ## _s_s, TYPE ## _scalar, float_scalar, , TYPE ## NDArray, TYPE ## _array, float_array, concat) \
75 DEFNDCATOP_FN2 (TYPE ## _ ## float ## _s_m, TYPE ## _scalar, float_matrix, , TYPE ## NDArray, TYPE ## _array, float_array, concat) \
76 DEFNDCATOP_FN2 (TYPE ## _ ## float ## _m_s, TYPE ## _matrix, float_scalar, , TYPE ## NDArray, TYPE ## _array, float_array, concat) \
77 DEFNDCATOP_FN2 (TYPE ## _ ## float ## _m_m, TYPE ## _matrix, float_matrix, , TYPE ## NDArray, TYPE ## _array, float_array, concat)
78
79 #define OCTAVE_INSTALL_INT_FLOAT_CONCAT_FN(TYPE) \
80 INSTALL_CATOP (octave_ ## TYPE ## _scalar, octave_float_scalar, TYPE ## _ ## float ## _s_s) \
81 INSTALL_CATOP (octave_ ## TYPE ## _scalar, octave_float_matrix, TYPE ## _ ## float ## _s_m) \
82 INSTALL_CATOP (octave_ ## TYPE ## _matrix, octave_float_scalar, TYPE ## _ ## float ## _m_s) \
83 INSTALL_CATOP (octave_ ## TYPE ## _matrix, octave_float_matrix, TYPE ## _ ## float ## _m_m)
60 84
61 // For compatibility, concatenation with a character always returns a 85 // For compatibility, concatenation with a character always returns a
62 // character. 86 // character.
63 87
64 #define OCTAVE_CHAR_INT_CONCAT_FN(TYPE) \ 88 #define OCTAVE_CHAR_INT_CONCAT_FN(TYPE) \
196 \ 220 \
197 octave_value \ 221 octave_value \
198 xpow (double a, const octave_ ## T1& b) \ 222 xpow (double a, const octave_ ## T1& b) \
199 { \ 223 { \
200 return pow (a, b); \ 224 return pow (a, b); \
225 } \
226 \
227 octave_value \
228 xpow (const octave_ ## T1& a, float b) \
229 { \
230 return pow (a, b); \
231 } \
232 \
233 octave_value \
234 xpow (float a, const octave_ ## T1& b) \
235 { \
236 return pow (a, b); \
201 } 237 }
202 238
203 #define OCTAVE_SS_INT_OPS(TYPE) \ 239 #define OCTAVE_SS_INT_OPS(TYPE) \
204 OCTAVE_S_INT_UNOPS (TYPE) \ 240 OCTAVE_S_INT_UNOPS (TYPE) \
205 OCTAVE_SS_POW_OPS (TYPE, TYPE) \ 241 OCTAVE_SS_POW_OPS (TYPE, TYPE) \
206 OCTAVE_SS_INT_ARITH_OPS (ss, TYPE ## _, TYPE ## _) \ 242 OCTAVE_SS_INT_ARITH_OPS (ss, TYPE ## _, TYPE ## _) \
207 OCTAVE_SS_INT_ARITH_OPS (ssx, TYPE ## _, ) \ 243 OCTAVE_SS_INT_ARITH_OPS (ssx, TYPE ## _, ) \
208 OCTAVE_SS_INT_ARITH_OPS (sxs, , TYPE ## _) \ 244 OCTAVE_SS_INT_ARITH_OPS (sxs, , TYPE ## _) \
245 OCTAVE_SS_INT_ARITH_OPS (ssfx, TYPE ## _, float_) \
246 OCTAVE_SS_INT_ARITH_OPS (sfxs, float_, TYPE ## _) \
209 OCTAVE_SS_INT_CMP_OPS (ss, TYPE ## _, TYPE ## _) \ 247 OCTAVE_SS_INT_CMP_OPS (ss, TYPE ## _, TYPE ## _) \
210 OCTAVE_SS_INT_CMP_OPS (sx, TYPE ## _, ) \ 248 OCTAVE_SS_INT_CMP_OPS (sx, TYPE ## _, ) \
211 OCTAVE_SS_INT_CMP_OPS (xs, , TYPE ## _) \ 249 OCTAVE_SS_INT_CMP_OPS (xs, , TYPE ## _) \
250 OCTAVE_SS_INT_CMP_OPS (sfx, TYPE ## _, float_) \
251 OCTAVE_SS_INT_CMP_OPS (fxs, float_, TYPE ## _) \
212 OCTAVE_SS_INT_BOOL_OPS (ss, TYPE ## _, TYPE ## _, octave_ ## TYPE (0), octave_ ## TYPE (0)) \ 252 OCTAVE_SS_INT_BOOL_OPS (ss, TYPE ## _, TYPE ## _, octave_ ## TYPE (0), octave_ ## TYPE (0)) \
213 OCTAVE_SS_INT_BOOL_OPS (sx, TYPE ## _, , octave_ ## TYPE (0), 0) \ 253 OCTAVE_SS_INT_BOOL_OPS (sx, TYPE ## _, , octave_ ## TYPE (0), 0) \
214 OCTAVE_SS_INT_BOOL_OPS (xs, , TYPE ## _, 0, octave_ ## TYPE (0)) 254 OCTAVE_SS_INT_BOOL_OPS (xs, , TYPE ## _, 0, octave_ ## TYPE (0)) \
255 OCTAVE_SS_INT_BOOL_OPS (sfx, TYPE ## _, float_, octave_ ## TYPE (0), 0) \
256 OCTAVE_SS_INT_BOOL_OPS (fxs, float_, TYPE ## _, 0, octave_ ## TYPE (0))
215 257
216 #define OCTAVE_SM_INT_ARITH_OPS(PFX, TS, TM) \ 258 #define OCTAVE_SM_INT_ARITH_OPS(PFX, TS, TM) \
217 /* scalar by matrix ops. */ \ 259 /* scalar by matrix ops. */ \
218 \ 260 \
219 DEFNDBINOP_OP (PFX ## _add, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, +) \ 261 DEFNDBINOP_OP (PFX ## _add, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, +) \
307 { \ 349 { \
308 OCTAVE_QUIT; \ 350 OCTAVE_QUIT; \
309 result (i) = pow (a, b(i)); \ 351 result (i) = pow (a, b(i)); \
310 } \ 352 } \
311 return octave_value (result); \ 353 return octave_value (result); \
354 } \
355 \
356 octave_value \
357 elem_xpow (const octave_ ## T1& a, const FloatNDArray& b) \
358 { \
359 T1 ## NDArray result (b.dims ()); \
360 for (int i = 0; i < b.length (); i++) \
361 { \
362 OCTAVE_QUIT; \
363 result (i) = pow (a, b(i)); \
364 } \
365 return octave_value (result); \
366 } \
367 \
368 octave_value \
369 elem_xpow (float a, const T2 ## NDArray& b) \
370 { \
371 T2 ## NDArray result (b.dims ()); \
372 for (int i = 0; i < b.length (); i++) \
373 { \
374 OCTAVE_QUIT; \
375 result (i) = pow (a, b(i)); \
376 } \
377 return octave_value (result); \
312 } 378 }
313 379
314 380
315 #define OCTAVE_SM_CONV(TS, TM) \ 381 #define OCTAVE_SM_CONV(TS, TM) \
316 DEFCONV (TS ## s_ ## TM ## m_conv, TM ## scalar, TM ## matrix) \ 382 DEFCONV (TS ## s_ ## TM ## m_conv, TM ## scalar, TM ## matrix) \
323 #define OCTAVE_SM_INT_OPS(TYPE) \ 389 #define OCTAVE_SM_INT_OPS(TYPE) \
324 OCTAVE_SM_POW_OPS (TYPE, TYPE) \ 390 OCTAVE_SM_POW_OPS (TYPE, TYPE) \
325 OCTAVE_SM_INT_ARITH_OPS (sm, TYPE ## _, TYPE ## _) \ 391 OCTAVE_SM_INT_ARITH_OPS (sm, TYPE ## _, TYPE ## _) \
326 OCTAVE_SM_INT_ARITH_OPS (smx, TYPE ## _, ) \ 392 OCTAVE_SM_INT_ARITH_OPS (smx, TYPE ## _, ) \
327 OCTAVE_SM_INT_ARITH_OPS (sxm, , TYPE ## _) \ 393 OCTAVE_SM_INT_ARITH_OPS (sxm, , TYPE ## _) \
394 OCTAVE_SM_INT_ARITH_OPS (smfx, TYPE ## _, float_) \
395 OCTAVE_SM_INT_ARITH_OPS (sfxm, float_, TYPE ## _) \
328 OCTAVE_SM_INT_CMP_OPS (sm, TYPE ## _, TYPE ## _) \ 396 OCTAVE_SM_INT_CMP_OPS (sm, TYPE ## _, TYPE ## _) \
329 OCTAVE_SM_INT_CMP_OPS (xm, , TYPE ## _) \ 397 OCTAVE_SM_INT_CMP_OPS (xm, , TYPE ## _) \
330 OCTAVE_SM_INT_CMP_OPS (smx, TYPE ## _, ) \ 398 OCTAVE_SM_INT_CMP_OPS (smx, TYPE ## _, ) \
399 OCTAVE_SM_INT_CMP_OPS (fxm, float_, TYPE ## _) \
400 OCTAVE_SM_INT_CMP_OPS (smfx, TYPE ## _, float_) \
331 OCTAVE_SM_INT_BOOL_OPS (sm, TYPE ## _, TYPE ## _) \ 401 OCTAVE_SM_INT_BOOL_OPS (sm, TYPE ## _, TYPE ## _) \
332 OCTAVE_SM_INT_BOOL_OPS (xm, , TYPE ## _) \ 402 OCTAVE_SM_INT_BOOL_OPS (xm, , TYPE ## _) \
333 OCTAVE_SM_INT_BOOL_OPS (smx, TYPE ## _, ) \ 403 OCTAVE_SM_INT_BOOL_OPS (smx, TYPE ## _, ) \
404 OCTAVE_SM_INT_BOOL_OPS (fxm, float_, TYPE ## _) \
405 OCTAVE_SM_INT_BOOL_OPS (smfx, TYPE ## _, float_) \
334 OCTAVE_SM_CONV (TYPE ## _, TYPE ## _) \ 406 OCTAVE_SM_CONV (TYPE ## _, TYPE ## _) \
335 OCTAVE_SM_CONV (TYPE ## _, complex_) 407 OCTAVE_SM_CONV (TYPE ## _, complex_) \
408 OCTAVE_SM_CONV (TYPE ## _, float_complex_)
336 409
337 #define OCTAVE_MS_INT_ARITH_OPS(PFX, TM, TS) \ 410 #define OCTAVE_MS_INT_ARITH_OPS(PFX, TM, TS) \
338 /* matrix by scalar ops. */ \ 411 /* matrix by scalar ops. */ \
339 \ 412 \
340 DEFNDBINOP_OP (PFX ## _add, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, +) \ 413 DEFNDBINOP_OP (PFX ## _add, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, +) \
429 { \ 502 { \
430 OCTAVE_QUIT; \ 503 OCTAVE_QUIT; \
431 result (i) = pow (a(i), b); \ 504 result (i) = pow (a(i), b); \
432 } \ 505 } \
433 return octave_value (result); \ 506 return octave_value (result); \
507 } \
508 \
509 octave_value elem_xpow (T1 ## NDArray a, float b) \
510 { \
511 T1 ## NDArray result (a.dims ()); \
512 for (int i = 0; i < a.length (); i++) \
513 { \
514 OCTAVE_QUIT; \
515 result (i) = pow (a(i), b); \
516 } \
517 return octave_value (result); \
518 } \
519 \
520 octave_value elem_xpow (FloatNDArray a, octave_ ## T2 b) \
521 { \
522 T2 ## NDArray result (a.dims ()); \
523 for (int i = 0; i < a.length (); i++) \
524 { \
525 OCTAVE_QUIT; \
526 result (i) = pow (a(i), b); \
527 } \
528 return octave_value (result); \
434 } 529 }
435 530
436 531
437 #define OCTAVE_MS_INT_OPS(TYPE) \ 532 #define OCTAVE_MS_INT_OPS(TYPE) \
438 OCTAVE_MS_POW_OPS (TYPE, TYPE) \ 533 OCTAVE_MS_POW_OPS (TYPE, TYPE) \
439 OCTAVE_MS_INT_ARITH_OPS (ms, TYPE ## _, TYPE ## _) \ 534 OCTAVE_MS_INT_ARITH_OPS (ms, TYPE ## _, TYPE ## _) \
440 OCTAVE_MS_INT_ARITH_OPS (msx, TYPE ## _, ) \ 535 OCTAVE_MS_INT_ARITH_OPS (msx, TYPE ## _, ) \
441 OCTAVE_MS_INT_ARITH_OPS (mxs, , TYPE ## _) \ 536 OCTAVE_MS_INT_ARITH_OPS (mxs, , TYPE ## _) \
537 OCTAVE_MS_INT_ARITH_OPS (msfx, TYPE ## _, float_) \
538 OCTAVE_MS_INT_ARITH_OPS (mfxs, float_, TYPE ## _) \
442 OCTAVE_MS_INT_CMP_OPS (ms, TYPE ## _, TYPE ## _) \ 539 OCTAVE_MS_INT_CMP_OPS (ms, TYPE ## _, TYPE ## _) \
443 OCTAVE_MS_INT_CMP_OPS (mx, TYPE ## _, ) \ 540 OCTAVE_MS_INT_CMP_OPS (mx, TYPE ## _, ) \
444 OCTAVE_MS_INT_CMP_OPS (mxs, , TYPE ## _) \ 541 OCTAVE_MS_INT_CMP_OPS (mxs, , TYPE ## _) \
542 OCTAVE_MS_INT_CMP_OPS (mfx, TYPE ## _, float_) \
543 OCTAVE_MS_INT_CMP_OPS (mfxs, float_, TYPE ## _) \
445 OCTAVE_MS_INT_BOOL_OPS (ms, TYPE ## _, TYPE ## _) \ 544 OCTAVE_MS_INT_BOOL_OPS (ms, TYPE ## _, TYPE ## _) \
446 OCTAVE_MS_INT_BOOL_OPS (mx, TYPE ## _, ) \ 545 OCTAVE_MS_INT_BOOL_OPS (mx, TYPE ## _, ) \
447 OCTAVE_MS_INT_BOOL_OPS (mxs, , TYPE ## _) \ 546 OCTAVE_MS_INT_BOOL_OPS (mxs, , TYPE ## _) \
547 OCTAVE_MS_INT_BOOL_OPS (mfx, TYPE ## _, float_) \
548 OCTAVE_MS_INT_BOOL_OPS (mfxs, float_, TYPE ## _) \
448 OCTAVE_MS_INT_ASSIGN_OPS (ms, TYPE ## _, TYPE ## _, TYPE ## _) \ 549 OCTAVE_MS_INT_ASSIGN_OPS (ms, TYPE ## _, TYPE ## _, TYPE ## _) \
449 OCTAVE_MS_INT_ASSIGN_OPS (mx, TYPE ## _, , ) 550 OCTAVE_MS_INT_ASSIGN_OPS (mx, TYPE ## _, , ) \
551 OCTAVE_MS_INT_ASSIGN_OPS (mfx, TYPE ## _, float_, float_)
450 552
451 #define OCTAVE_M_INT_UNOPS(TYPE) \ 553 #define OCTAVE_M_INT_UNOPS(TYPE) \
452 /* matrix unary ops. */ \ 554 /* matrix unary ops. */ \
453 \ 555 \
454 DEFNDUNOP_OP (m_not, TYPE ## _matrix, TYPE ## _array, !) \ 556 DEFNDUNOP_OP (m_not, TYPE ## _matrix, TYPE ## _array, !) \
570 { \ 672 { \
571 OCTAVE_QUIT; \ 673 OCTAVE_QUIT; \
572 result (i) = pow (a(i), b(i)); \ 674 result (i) = pow (a(i), b(i)); \
573 } \ 675 } \
574 return octave_value (result); \ 676 return octave_value (result); \
677 } \
678 \
679 octave_value \
680 elem_xpow (const T1 ## NDArray& a, const FloatNDArray& b) \
681 { \
682 dim_vector a_dims = a.dims (); \
683 dim_vector b_dims = b.dims (); \
684 if (a_dims != b_dims) \
685 { \
686 gripe_nonconformant ("operator .^", a_dims, b_dims); \
687 return octave_value (); \
688 } \
689 T1 ## NDArray result (a_dims); \
690 for (int i = 0; i < a.length (); i++) \
691 { \
692 OCTAVE_QUIT; \
693 result (i) = pow (a(i), b(i)); \
694 } \
695 return octave_value (result); \
696 } \
697 \
698 octave_value \
699 elem_xpow (const FloatNDArray& a, const T2 ## NDArray& b) \
700 { \
701 dim_vector a_dims = a.dims (); \
702 dim_vector b_dims = b.dims (); \
703 if (a_dims != b_dims) \
704 { \
705 gripe_nonconformant ("operator .^", a_dims, b_dims); \
706 return octave_value (); \
707 } \
708 T2 ## NDArray result (a_dims); \
709 for (int i = 0; i < a.length (); i++) \
710 { \
711 OCTAVE_QUIT; \
712 result (i) = pow (a(i), b(i)); \
713 } \
714 return octave_value (result); \
575 } 715 }
576 716
577 717
578 #define OCTAVE_MM_CONV(T1, T2) \ 718 #define OCTAVE_MM_CONV(T1, T2) \
579 DEFCONV (T1 ## m_ ## T2 ## m_conv, T1 ## matrix, T2 ## matrix) \ 719 DEFCONV (T1 ## m_ ## T2 ## m_conv, T1 ## matrix, T2 ## matrix) \
587 OCTAVE_M_INT_UNOPS (TYPE) \ 727 OCTAVE_M_INT_UNOPS (TYPE) \
588 OCTAVE_MM_POW_OPS (TYPE, TYPE) \ 728 OCTAVE_MM_POW_OPS (TYPE, TYPE) \
589 OCTAVE_MM_INT_ARITH_OPS (mm, TYPE ## _, TYPE ## _) \ 729 OCTAVE_MM_INT_ARITH_OPS (mm, TYPE ## _, TYPE ## _) \
590 OCTAVE_MM_INT_ARITH_OPS (mmx, TYPE ## _, ) \ 730 OCTAVE_MM_INT_ARITH_OPS (mmx, TYPE ## _, ) \
591 OCTAVE_MM_INT_ARITH_OPS (mxm, , TYPE ## _) \ 731 OCTAVE_MM_INT_ARITH_OPS (mxm, , TYPE ## _) \
732 OCTAVE_MM_INT_ARITH_OPS (mmfx, TYPE ## _, float_) \
733 OCTAVE_MM_INT_ARITH_OPS (mfxm, float_, TYPE ## _) \
592 OCTAVE_MM_INT_CMP_OPS (mm, TYPE ## _, TYPE ## _) \ 734 OCTAVE_MM_INT_CMP_OPS (mm, TYPE ## _, TYPE ## _) \
593 OCTAVE_MM_INT_CMP_OPS (mmx, TYPE ## _, ) \ 735 OCTAVE_MM_INT_CMP_OPS (mmx, TYPE ## _, ) \
736 OCTAVE_MM_INT_CMP_OPS (mfxm, float_, TYPE ## _) \
737 OCTAVE_MM_INT_CMP_OPS (mmfx, TYPE ## _, float_) \
594 OCTAVE_MM_INT_CMP_OPS (mxm, , TYPE ## _) \ 738 OCTAVE_MM_INT_CMP_OPS (mxm, , TYPE ## _) \
595 OCTAVE_MM_INT_BOOL_OPS (mm, TYPE ## _, TYPE ## _) \ 739 OCTAVE_MM_INT_BOOL_OPS (mm, TYPE ## _, TYPE ## _) \
596 OCTAVE_MM_INT_BOOL_OPS (mmx, TYPE ## _, ) \ 740 OCTAVE_MM_INT_BOOL_OPS (mmx, TYPE ## _, ) \
597 OCTAVE_MM_INT_BOOL_OPS (mxm, , TYPE ## _) \ 741 OCTAVE_MM_INT_BOOL_OPS (mxm, , TYPE ## _) \
742 OCTAVE_MM_INT_BOOL_OPS (mmfx, TYPE ## _, float_) \
743 OCTAVE_MM_INT_BOOL_OPS (mfxm, float_, TYPE ## _) \
598 OCTAVE_MM_INT_ASSIGN_OPS (mm, TYPE ## _, TYPE ## _, TYPE ## _) \ 744 OCTAVE_MM_INT_ASSIGN_OPS (mm, TYPE ## _, TYPE ## _, TYPE ## _) \
599 OCTAVE_MM_INT_ASSIGN_OPS (mmx, TYPE ## _, , ) \ 745 OCTAVE_MM_INT_ASSIGN_OPS (mmx, TYPE ## _, , ) \
600 OCTAVE_MM_CONV(TYPE ## _, complex_) 746 OCTAVE_MM_INT_ASSIGN_OPS (mmfx, TYPE ## _, float_, float_) \
747 OCTAVE_MM_CONV(TYPE ## _, complex_) \
748 OCTAVE_MM_CONV(TYPE ## _, float_complex_)
601 749
602 #define OCTAVE_RE_INT_ASSIGN_OPS(TYPE) \ 750 #define OCTAVE_RE_INT_ASSIGN_OPS(TYPE) \
603 DEFNDASSIGNOP_FN (TYPE ## ms_assign, matrix, TYPE ## _scalar, array, assign) \ 751 DEFNDASSIGNOP_FN (TYPE ## ms_assign, matrix, TYPE ## _scalar, array, assign) \
604 DEFNDASSIGNOP_FN (TYPE ## mm_assign, matrix, TYPE ## _matrix, array, assign) 752 DEFNDASSIGNOP_FN (TYPE ## mm_assign, matrix, TYPE ## _matrix, array, assign)
605 753
754 #define OCTAVE_FLT_RE_INT_ASSIGN_OPS(TYPE) \
755 DEFNDASSIGNOP_FN (TYPE ## fms_assign, float_matrix, TYPE ## _scalar, float_array, assign) \
756 DEFNDASSIGNOP_FN (TYPE ## fmm_assign, float_matrix, TYPE ## _matrix, float_array, assign)
757
606 #define OCTAVE_CX_INT_ASSIGN_OPS(TYPE) \ 758 #define OCTAVE_CX_INT_ASSIGN_OPS(TYPE) \
607 DEFNDASSIGNOP_FN (TYPE ## cms_assign, complex_matrix, TYPE ## _scalar, complex_array, assign) \ 759 DEFNDASSIGNOP_FN (TYPE ## cms_assign, complex_matrix, TYPE ## _scalar, complex_array, assign) \
608 DEFNDASSIGNOP_FN (TYPE ## cmm_assign, complex_matrix, TYPE ## _matrix, complex_array, assign) 760 DEFNDASSIGNOP_FN (TYPE ## cmm_assign, complex_matrix, TYPE ## _matrix, complex_array, assign)
761
762 #define OCTAVE_FLT_CX_INT_ASSIGN_OPS(TYPE) \
763 DEFNDASSIGNOP_FN (TYPE ## fcms_assign, float_complex_matrix, TYPE ## _scalar, float_complex_array, assign) \
764 DEFNDASSIGNOP_FN (TYPE ## fcmm_assign, float_complex_matrix, TYPE ## _matrix, float_complex_array, assign)
609 765
610 #define OCTAVE_INT_OPS(TYPE) \ 766 #define OCTAVE_INT_OPS(TYPE) \
611 OCTAVE_SS_INT_OPS (TYPE) \ 767 OCTAVE_SS_INT_OPS (TYPE) \
612 OCTAVE_SM_INT_OPS (TYPE) \ 768 OCTAVE_SM_INT_OPS (TYPE) \
613 OCTAVE_MS_INT_OPS (TYPE) \ 769 OCTAVE_MS_INT_OPS (TYPE) \
614 OCTAVE_MM_INT_OPS (TYPE) \ 770 OCTAVE_MM_INT_OPS (TYPE) \
615 OCTAVE_CONCAT_FN (TYPE) \ 771 OCTAVE_CONCAT_FN (TYPE) \
616 OCTAVE_RE_INT_ASSIGN_OPS (TYPE) \ 772 OCTAVE_RE_INT_ASSIGN_OPS (TYPE) \
617 OCTAVE_CX_INT_ASSIGN_OPS (TYPE) 773 OCTAVE_FLT_RE_INT_ASSIGN_OPS (TYPE) \
774 OCTAVE_CX_INT_ASSIGN_OPS (TYPE) \
775 OCTAVE_FLT_CX_INT_ASSIGN_OPS (TYPE)
618 776
619 #define OCTAVE_INSTALL_S_INT_UNOPS(TYPE) \ 777 #define OCTAVE_INSTALL_S_INT_UNOPS(TYPE) \
620 INSTALL_UNOP (op_not, octave_ ## TYPE ## _scalar, s_not); \ 778 INSTALL_UNOP (op_not, octave_ ## TYPE ## _scalar, s_not); \
621 INSTALL_UNOP (op_uplus, octave_ ## TYPE ## _scalar, s_uplus); \ 779 INSTALL_UNOP (op_uplus, octave_ ## TYPE ## _scalar, s_uplus); \
622 INSTALL_UNOP (op_uminus, octave_ ## TYPE ## _scalar, s_uminus); \ 780 INSTALL_UNOP (op_uminus, octave_ ## TYPE ## _scalar, s_uminus); \
653 #define OCTAVE_INSTALL_SS_INT_OPS(TYPE) \ 811 #define OCTAVE_INSTALL_SS_INT_OPS(TYPE) \
654 OCTAVE_INSTALL_S_INT_UNOPS (TYPE) \ 812 OCTAVE_INSTALL_S_INT_UNOPS (TYPE) \
655 OCTAVE_INSTALL_SS_INT_ARITH_OPS (ss, TYPE ## _, TYPE ## _) \ 813 OCTAVE_INSTALL_SS_INT_ARITH_OPS (ss, TYPE ## _, TYPE ## _) \
656 OCTAVE_INSTALL_SS_INT_ARITH_OPS (ssx, TYPE ## _, ) \ 814 OCTAVE_INSTALL_SS_INT_ARITH_OPS (ssx, TYPE ## _, ) \
657 OCTAVE_INSTALL_SS_INT_ARITH_OPS (sxs, , TYPE ## _) \ 815 OCTAVE_INSTALL_SS_INT_ARITH_OPS (sxs, , TYPE ## _) \
816 OCTAVE_INSTALL_SS_INT_ARITH_OPS (ssfx, TYPE ## _, float_) \
817 OCTAVE_INSTALL_SS_INT_ARITH_OPS (sfxs, float_, TYPE ## _) \
658 OCTAVE_INSTALL_SS_INT_CMP_OPS (ss, TYPE ## _, TYPE ## _) \ 818 OCTAVE_INSTALL_SS_INT_CMP_OPS (ss, TYPE ## _, TYPE ## _) \
659 OCTAVE_INSTALL_SS_INT_CMP_OPS (sx, TYPE ## _, ) \ 819 OCTAVE_INSTALL_SS_INT_CMP_OPS (sx, TYPE ## _, ) \
660 OCTAVE_INSTALL_SS_INT_CMP_OPS (xs, , TYPE ## _) \ 820 OCTAVE_INSTALL_SS_INT_CMP_OPS (xs, , TYPE ## _) \
821 OCTAVE_INSTALL_SS_INT_CMP_OPS (sfx, TYPE ## _, float_) \
822 OCTAVE_INSTALL_SS_INT_CMP_OPS (fxs, float_, TYPE ## _) \
661 OCTAVE_INSTALL_SS_INT_BOOL_OPS (ss, TYPE ## _, TYPE ## _) \ 823 OCTAVE_INSTALL_SS_INT_BOOL_OPS (ss, TYPE ## _, TYPE ## _) \
662 OCTAVE_INSTALL_SS_INT_BOOL_OPS (sx, TYPE ## _, ) \ 824 OCTAVE_INSTALL_SS_INT_BOOL_OPS (sx, TYPE ## _, ) \
663 OCTAVE_INSTALL_SS_INT_BOOL_OPS (xs, , TYPE ## _) \ 825 OCTAVE_INSTALL_SS_INT_BOOL_OPS (xs, , TYPE ## _) \
826 OCTAVE_INSTALL_SS_INT_BOOL_OPS (sfx, TYPE ## _, float_) \
827 OCTAVE_INSTALL_SS_INT_BOOL_OPS (fxs, float_, TYPE ## _) \
664 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _matrix) \ 828 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _matrix) \
665 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_scalar, octave_ ## TYPE ## _matrix) \ 829 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_scalar, octave_ ## TYPE ## _matrix) \
666 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_complex_scalar, octave_complex_matrix) 830 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_float_scalar, octave_ ## TYPE ## _matrix) \
831 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_complex_scalar, octave_complex_matrix) \
832 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_float_complex_scalar, octave_float_complex_matrix)
667 833
668 #define OCTAVE_INSTALL_SM_INT_ARITH_OPS(PFX, T1, T2) \ 834 #define OCTAVE_INSTALL_SM_INT_ARITH_OPS(PFX, T1, T2) \
669 INSTALL_BINOP (op_add, octave_ ## T1 ## scalar, octave_ ## T2 ## matrix, PFX ## _add); \ 835 INSTALL_BINOP (op_add, octave_ ## T1 ## scalar, octave_ ## T2 ## matrix, PFX ## _add); \
670 INSTALL_BINOP (op_sub, octave_ ## T1 ## scalar, octave_ ## T2 ## matrix, PFX ## _sub); \ 836 INSTALL_BINOP (op_sub, octave_ ## T1 ## scalar, octave_ ## T2 ## matrix, PFX ## _sub); \
671 INSTALL_BINOP (op_mul, octave_ ## T1 ## scalar, octave_ ## T2 ## matrix, PFX ## _mul); \ 837 INSTALL_BINOP (op_mul, octave_ ## T1 ## scalar, octave_ ## T2 ## matrix, PFX ## _mul); \
691 857
692 #define OCTAVE_INSTALL_SM_INT_OPS(TYPE) \ 858 #define OCTAVE_INSTALL_SM_INT_OPS(TYPE) \
693 OCTAVE_INSTALL_SM_INT_ARITH_OPS (sm, TYPE ## _, TYPE ## _) \ 859 OCTAVE_INSTALL_SM_INT_ARITH_OPS (sm, TYPE ## _, TYPE ## _) \
694 OCTAVE_INSTALL_SM_INT_ARITH_OPS (smx, TYPE ## _, ) \ 860 OCTAVE_INSTALL_SM_INT_ARITH_OPS (smx, TYPE ## _, ) \
695 OCTAVE_INSTALL_SM_INT_ARITH_OPS (sxm, , TYPE ## _) \ 861 OCTAVE_INSTALL_SM_INT_ARITH_OPS (sxm, , TYPE ## _) \
862 OCTAVE_INSTALL_SM_INT_ARITH_OPS (smfx, TYPE ## _, float_) \
863 OCTAVE_INSTALL_SM_INT_ARITH_OPS (sfxm, float_, TYPE ## _) \
696 OCTAVE_INSTALL_SM_INT_CMP_OPS (sm, TYPE ## _, TYPE ## _) \ 864 OCTAVE_INSTALL_SM_INT_CMP_OPS (sm, TYPE ## _, TYPE ## _) \
697 OCTAVE_INSTALL_SM_INT_CMP_OPS (xm, , TYPE ## _) \ 865 OCTAVE_INSTALL_SM_INT_CMP_OPS (xm, , TYPE ## _) \
698 OCTAVE_INSTALL_SM_INT_CMP_OPS (smx, TYPE ## _, ) \ 866 OCTAVE_INSTALL_SM_INT_CMP_OPS (smx, TYPE ## _, ) \
867 OCTAVE_INSTALL_SM_INT_CMP_OPS (fxm, float_, TYPE ## _) \
868 OCTAVE_INSTALL_SM_INT_CMP_OPS (smfx, TYPE ## _, float_) \
699 OCTAVE_INSTALL_SM_INT_BOOL_OPS (sm, TYPE ## _, TYPE ## _) \ 869 OCTAVE_INSTALL_SM_INT_BOOL_OPS (sm, TYPE ## _, TYPE ## _) \
700 OCTAVE_INSTALL_SM_INT_BOOL_OPS (xm, , TYPE ## _) \ 870 OCTAVE_INSTALL_SM_INT_BOOL_OPS (xm, , TYPE ## _) \
701 OCTAVE_INSTALL_SM_INT_BOOL_OPS (smx, TYPE ## _, ) \ 871 OCTAVE_INSTALL_SM_INT_BOOL_OPS (smx, TYPE ## _, ) \
872 OCTAVE_INSTALL_SM_INT_BOOL_OPS (fxm, float_, TYPE ## _) \
873 OCTAVE_INSTALL_SM_INT_BOOL_OPS (smfx, TYPE ## _, float_) \
702 INSTALL_WIDENOP (octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _matrix, TYPE ## _s_ ## TYPE ## _m_conv) \ 874 INSTALL_WIDENOP (octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _matrix, TYPE ## _s_ ## TYPE ## _m_conv) \
703 INSTALL_WIDENOP (octave_ ## TYPE ## _scalar, octave_complex_matrix, TYPE ## _s_complex_m_conv) \ 875 INSTALL_WIDENOP (octave_ ## TYPE ## _scalar, octave_complex_matrix, TYPE ## _s_complex_m_conv) \
876 INSTALL_WIDENOP (octave_ ## TYPE ## _scalar, octave_float_complex_matrix, TYPE ## _s_float_complex_m_conv) \
704 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _matrix, octave_ ## TYPE ## _matrix) \ 877 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_ ## TYPE ## _matrix, octave_ ## TYPE ## _matrix) \
705 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_matrix, octave_ ## TYPE ## _matrix) \ 878 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_matrix, octave_ ## TYPE ## _matrix) \
706 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_complex_matrix, octave_complex_matrix) 879 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_float_matrix, octave_ ## TYPE ## _matrix) \
880 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_complex_matrix, octave_complex_matrix) \
881 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _scalar, octave_float_complex_matrix, octave_float_complex_matrix)
707 882
708 #define OCTAVE_INSTALL_MS_INT_ARITH_OPS(PFX, T1, T2) \ 883 #define OCTAVE_INSTALL_MS_INT_ARITH_OPS(PFX, T1, T2) \
709 INSTALL_BINOP (op_add, octave_ ## T1 ## matrix, octave_ ## T2 ## scalar, PFX ## _add); \ 884 INSTALL_BINOP (op_add, octave_ ## T1 ## matrix, octave_ ## T2 ## scalar, PFX ## _add); \
710 INSTALL_BINOP (op_sub, octave_ ## T1 ## matrix, octave_ ## T2 ## scalar, PFX ## _sub); \ 885 INSTALL_BINOP (op_sub, octave_ ## T1 ## matrix, octave_ ## T2 ## scalar, PFX ## _sub); \
711 INSTALL_BINOP (op_mul, octave_ ## T1 ## matrix, octave_ ## T2 ## scalar, PFX ## _mul); \ 886 INSTALL_BINOP (op_mul, octave_ ## T1 ## matrix, octave_ ## T2 ## scalar, PFX ## _mul); \
735 910
736 #define OCTAVE_INSTALL_MS_INT_OPS(TYPE) \ 911 #define OCTAVE_INSTALL_MS_INT_OPS(TYPE) \
737 OCTAVE_INSTALL_MS_INT_ARITH_OPS (ms, TYPE ## _, TYPE ## _) \ 912 OCTAVE_INSTALL_MS_INT_ARITH_OPS (ms, TYPE ## _, TYPE ## _) \
738 OCTAVE_INSTALL_MS_INT_ARITH_OPS (msx, TYPE ## _, ) \ 913 OCTAVE_INSTALL_MS_INT_ARITH_OPS (msx, TYPE ## _, ) \
739 OCTAVE_INSTALL_MS_INT_ARITH_OPS (mxs, , TYPE ## _) \ 914 OCTAVE_INSTALL_MS_INT_ARITH_OPS (mxs, , TYPE ## _) \
915 OCTAVE_INSTALL_MS_INT_ARITH_OPS (msfx, TYPE ## _, float_) \
916 OCTAVE_INSTALL_MS_INT_ARITH_OPS (mfxs, float_, TYPE ## _) \
740 OCTAVE_INSTALL_MS_INT_CMP_OPS (ms, TYPE ## _, TYPE ## _) \ 917 OCTAVE_INSTALL_MS_INT_CMP_OPS (ms, TYPE ## _, TYPE ## _) \
741 OCTAVE_INSTALL_MS_INT_CMP_OPS (mx, TYPE ## _, ) \ 918 OCTAVE_INSTALL_MS_INT_CMP_OPS (mx, TYPE ## _, ) \
742 OCTAVE_INSTALL_MS_INT_CMP_OPS (mxs, , TYPE ## _) \ 919 OCTAVE_INSTALL_MS_INT_CMP_OPS (mxs, , TYPE ## _) \
920 OCTAVE_INSTALL_MS_INT_CMP_OPS (mfx, TYPE ## _, float_) \
921 OCTAVE_INSTALL_MS_INT_CMP_OPS (mfxs, float_, TYPE ## _) \
743 OCTAVE_INSTALL_MS_INT_BOOL_OPS (ms, TYPE ## _, TYPE ## _) \ 922 OCTAVE_INSTALL_MS_INT_BOOL_OPS (ms, TYPE ## _, TYPE ## _) \
744 OCTAVE_INSTALL_MS_INT_BOOL_OPS (mx, TYPE ## _, ) \ 923 OCTAVE_INSTALL_MS_INT_BOOL_OPS (mx, TYPE ## _, ) \
745 OCTAVE_INSTALL_MS_INT_BOOL_OPS (mxs, , TYPE ## _) \ 924 OCTAVE_INSTALL_MS_INT_BOOL_OPS (mxs, , TYPE ## _) \
925 OCTAVE_INSTALL_MS_INT_BOOL_OPS (mfx, TYPE ## _, float_) \
926 OCTAVE_INSTALL_MS_INT_BOOL_OPS (mfxs, float_, TYPE ## _) \
746 OCTAVE_INSTALL_MS_INT_ASSIGN_OPS (ms, TYPE ## _, TYPE ## _) \ 927 OCTAVE_INSTALL_MS_INT_ASSIGN_OPS (ms, TYPE ## _, TYPE ## _) \
747 OCTAVE_INSTALL_MS_INT_ASSIGN_OPS (mx, TYPE ## _, ) \ 928 OCTAVE_INSTALL_MS_INT_ASSIGN_OPS (mx, TYPE ## _, ) \
748 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _matrix, octave_complex_scalar, octave_complex_matrix) 929 OCTAVE_INSTALL_MS_INT_ASSIGN_OPS (mfx, TYPE ## _, float_) \
930 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _matrix, octave_complex_scalar, octave_complex_matrix) \
931 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _matrix, octave_float_complex_scalar, octave_float_complex_matrix)
749 932
750 #define OCTAVE_INSTALL_M_INT_UNOPS(TYPE) \ 933 #define OCTAVE_INSTALL_M_INT_UNOPS(TYPE) \
751 INSTALL_UNOP (op_not, octave_ ## TYPE ## _matrix, m_not); \ 934 INSTALL_UNOP (op_not, octave_ ## TYPE ## _matrix, m_not); \
752 INSTALL_UNOP (op_uplus, octave_ ## TYPE ## _matrix, m_uplus); \ 935 INSTALL_UNOP (op_uplus, octave_ ## TYPE ## _matrix, m_uplus); \
753 INSTALL_UNOP (op_uminus, octave_ ## TYPE ## _matrix, m_uminus); \ 936 INSTALL_UNOP (op_uminus, octave_ ## TYPE ## _matrix, m_uminus); \
787 #define OCTAVE_INSTALL_MM_INT_OPS(TYPE) \ 970 #define OCTAVE_INSTALL_MM_INT_OPS(TYPE) \
788 OCTAVE_INSTALL_M_INT_UNOPS (TYPE) \ 971 OCTAVE_INSTALL_M_INT_UNOPS (TYPE) \
789 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mm, TYPE ##_, TYPE ## _) \ 972 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mm, TYPE ##_, TYPE ## _) \
790 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mmx, TYPE ##_, ) \ 973 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mmx, TYPE ##_, ) \
791 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mxm, , TYPE ##_) \ 974 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mxm, , TYPE ##_) \
975 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mmfx, TYPE ##_, float_) \
976 OCTAVE_INSTALL_MM_INT_ARITH_OPS (mfxm, float_, TYPE ##_) \
792 OCTAVE_INSTALL_MM_INT_CMP_OPS (mm, TYPE ## _, TYPE ## _) \ 977 OCTAVE_INSTALL_MM_INT_CMP_OPS (mm, TYPE ## _, TYPE ## _) \
793 OCTAVE_INSTALL_MM_INT_CMP_OPS (mmx, TYPE ## _, ) \ 978 OCTAVE_INSTALL_MM_INT_CMP_OPS (mmx, TYPE ## _, ) \
794 OCTAVE_INSTALL_MM_INT_CMP_OPS (mxm, , TYPE ## _) \ 979 OCTAVE_INSTALL_MM_INT_CMP_OPS (mxm, , TYPE ## _) \
980 OCTAVE_INSTALL_MM_INT_CMP_OPS (mmfx, TYPE ## _, float_) \
981 OCTAVE_INSTALL_MM_INT_CMP_OPS (mfxm, float_, TYPE ## _) \
795 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mm, TYPE ## _, TYPE ## _) \ 982 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mm, TYPE ## _, TYPE ## _) \
796 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mmx, TYPE ## _, ) \ 983 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mmx, TYPE ## _, ) \
797 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mxm, , TYPE ## _) \ 984 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mxm, , TYPE ## _) \
985 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mmfx, TYPE ## _, float_) \
986 OCTAVE_INSTALL_MM_INT_BOOL_OPS (mfxm, float_, TYPE ## _) \
798 OCTAVE_INSTALL_MM_INT_ASSIGN_OPS (mm, TYPE ## _, TYPE ## _) \ 987 OCTAVE_INSTALL_MM_INT_ASSIGN_OPS (mm, TYPE ## _, TYPE ## _) \
799 OCTAVE_INSTALL_MM_INT_ASSIGN_OPS (mmx, TYPE ## _, ) \ 988 OCTAVE_INSTALL_MM_INT_ASSIGN_OPS (mmx, TYPE ## _, ) \
989 OCTAVE_INSTALL_MM_INT_ASSIGN_OPS (mmfx, TYPE ## _, float_) \
800 INSTALL_WIDENOP (octave_ ## TYPE ## _matrix, octave_complex_matrix, TYPE ## _m_complex_m_conv) \ 990 INSTALL_WIDENOP (octave_ ## TYPE ## _matrix, octave_complex_matrix, TYPE ## _m_complex_m_conv) \
801 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _matrix, octave_complex_matrix, octave_complex_matrix) 991 INSTALL_WIDENOP (octave_ ## TYPE ## _matrix, octave_float_complex_matrix, TYPE ## _m_float_complex_m_conv) \
992 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _matrix, octave_complex_matrix, octave_complex_matrix) \
993 INSTALL_ASSIGNCONV (octave_ ## TYPE ## _matrix, octave_float_complex_matrix, octave_float_complex_matrix)
802 994
803 #define OCTAVE_INSTALL_RE_INT_ASSIGN_OPS(TYPE) \ 995 #define OCTAVE_INSTALL_RE_INT_ASSIGN_OPS(TYPE) \
804 INSTALL_ASSIGNOP (op_asn_eq, octave_matrix, octave_ ## TYPE ## _scalar, TYPE ## ms_assign) \ 996 INSTALL_ASSIGNOP (op_asn_eq, octave_matrix, octave_ ## TYPE ## _scalar, TYPE ## ms_assign) \
805 INSTALL_ASSIGNOP (op_asn_eq, octave_matrix, octave_ ## TYPE ## _matrix, TYPE ## mm_assign) \ 997 INSTALL_ASSIGNOP (op_asn_eq, octave_matrix, octave_ ## TYPE ## _matrix, TYPE ## mm_assign) \
806 INSTALL_ASSIGNCONV (octave_scalar, octave_ ## TYPE ## _scalar, octave_matrix) \ 998 INSTALL_ASSIGNCONV (octave_scalar, octave_ ## TYPE ## _scalar, octave_matrix) \
807 INSTALL_ASSIGNCONV (octave_matrix, octave_ ## TYPE ## _matrix, octave_matrix) 999 INSTALL_ASSIGNCONV (octave_matrix, octave_ ## TYPE ## _matrix, octave_matrix)
808 1000
1001 #define OCTAVE_INSTALL_FLT_RE_INT_ASSIGN_OPS(TYPE) \
1002 INSTALL_ASSIGNOP (op_asn_eq, octave_float_matrix, octave_ ## TYPE ## _scalar, TYPE ## fms_assign) \
1003 INSTALL_ASSIGNOP (op_asn_eq, octave_float_matrix, octave_ ## TYPE ## _matrix, TYPE ## fmm_assign) \
1004 INSTALL_ASSIGNCONV (octave_float_scalar, octave_ ## TYPE ## _scalar, octave_float_matrix) \
1005 INSTALL_ASSIGNCONV (octave_float_matrix, octave_ ## TYPE ## _matrix, octave_float_matrix)
1006
809 #define OCTAVE_INSTALL_CX_INT_ASSIGN_OPS(TYPE) \ 1007 #define OCTAVE_INSTALL_CX_INT_ASSIGN_OPS(TYPE) \
810 INSTALL_ASSIGNOP (op_asn_eq, octave_complex_matrix, octave_ ## TYPE ## _scalar, TYPE ## cms_assign) \ 1008 INSTALL_ASSIGNOP (op_asn_eq, octave_complex_matrix, octave_ ## TYPE ## _scalar, TYPE ## cms_assign) \
811 INSTALL_ASSIGNOP (op_asn_eq, octave_complex_matrix, octave_ ## TYPE ## _matrix, TYPE ## cmm_assign) \ 1009 INSTALL_ASSIGNOP (op_asn_eq, octave_complex_matrix, octave_ ## TYPE ## _matrix, TYPE ## cmm_assign) \
812 INSTALL_ASSIGNCONV (octave_complex_scalar, octave_ ## TYPE ## _scalar, octave_complex_matrix) \ 1010 INSTALL_ASSIGNCONV (octave_complex_scalar, octave_ ## TYPE ## _scalar, octave_complex_matrix) \
813 INSTALL_ASSIGNCONV (octave_complex_matrix, octave_ ## TYPE ## _matrix, octave_complex_matrix) 1011 INSTALL_ASSIGNCONV (octave_complex_matrix, octave_ ## TYPE ## _matrix, octave_complex_matrix)
1012
1013 #define OCTAVE_INSTALL_FLT_CX_INT_ASSIGN_OPS(TYPE) \
1014 INSTALL_ASSIGNOP (op_asn_eq, octave_float_complex_matrix, octave_ ## TYPE ## _scalar, TYPE ## fcms_assign) \
1015 INSTALL_ASSIGNOP (op_asn_eq, octave_float_complex_matrix, octave_ ## TYPE ## _matrix, TYPE ## fcmm_assign) \
1016 INSTALL_ASSIGNCONV (octave_float_complex_scalar, octave_ ## TYPE ## _scalar, octave_complex_matrix) \
1017 INSTALL_ASSIGNCONV (octave_float_complex_matrix, octave_ ## TYPE ## _matrix, octave_complex_matrix)
814 1018
815 #define OCTAVE_INSTALL_INT_OPS(TYPE) \ 1019 #define OCTAVE_INSTALL_INT_OPS(TYPE) \
816 OCTAVE_INSTALL_SS_INT_OPS (TYPE) \ 1020 OCTAVE_INSTALL_SS_INT_OPS (TYPE) \
817 OCTAVE_INSTALL_SM_INT_OPS (TYPE) \ 1021 OCTAVE_INSTALL_SM_INT_OPS (TYPE) \
818 OCTAVE_INSTALL_MS_INT_OPS (TYPE) \ 1022 OCTAVE_INSTALL_MS_INT_OPS (TYPE) \
819 OCTAVE_INSTALL_MM_INT_OPS (TYPE) \ 1023 OCTAVE_INSTALL_MM_INT_OPS (TYPE) \
820 OCTAVE_INSTALL_CONCAT_FN (TYPE) \ 1024 OCTAVE_INSTALL_CONCAT_FN (TYPE) \
821 OCTAVE_INSTALL_RE_INT_ASSIGN_OPS (TYPE) \ 1025 OCTAVE_INSTALL_RE_INT_ASSIGN_OPS (TYPE) \
822 OCTAVE_INSTALL_CX_INT_ASSIGN_OPS (TYPE) 1026 OCTAVE_INSTALL_FLT_RE_INT_ASSIGN_OPS (TYPE) \
1027 OCTAVE_INSTALL_CX_INT_ASSIGN_OPS (TYPE) \
1028 OCTAVE_INSTALL_FLT_CX_INT_ASSIGN_OPS (TYPE)
823 1029
824 #define OCTAVE_INSTALL_SM_INT_ASSIGNCONV(TLHS, TRHS) \ 1030 #define OCTAVE_INSTALL_SM_INT_ASSIGNCONV(TLHS, TRHS) \
825 INSTALL_ASSIGNCONV (octave_ ## TLHS ## _scalar, octave_ ## TRHS ## _scalar, octave_ ## TLHS ## _matrix) \ 1031 INSTALL_ASSIGNCONV (octave_ ## TLHS ## _scalar, octave_ ## TRHS ## _scalar, octave_ ## TLHS ## _matrix) \
826 INSTALL_ASSIGNCONV (octave_ ## TLHS ## _scalar, octave_ ## TRHS ## _matrix, octave_ ## TLHS ## _matrix) 1032 INSTALL_ASSIGNCONV (octave_ ## TLHS ## _scalar, octave_ ## TRHS ## _matrix, octave_ ## TLHS ## _matrix)
827 1033