@@ -321,6 +321,10 @@ module ChapelBase {
321321 inline operator <= (a: uint (64 ), b: uint (64 )) do return __primitive(" <=" , a, b);
322322 inline operator <= (a: real (32 ), b: real (32 )) do return __primitive(" <=" , a, b);
323323 inline operator <= (a: real (64 ), b: real (64 )) do return __primitive(" <=" , a, b);
324+ inline operator <= (a: imag (32 ), b: imag (32 )) do return __primitive(" <=" , _i2r(a), _i2r(b));
325+ inline operator <= (a: imag (64 ), b: imag (64 )) do return __primitive(" <=" , _i2r(a), _i2r(b));
326+ inline operator <= (a: complex (64 ), b: complex (64 )) do compilerError(" ordered comparison of complex numbers is not supported" );
327+ inline operator <= (a: complex (128 ), b: complex (128 )) do compilerError(" ordered comparison of complex numbers is not supported" );
324328 operator <= (a: enum , b: enum ) where (a.type == b.type ) do
325329 return __primitive(" <=" , chpl__enumToOrder(a), chpl__enumToOrder(b));
326330 pragma " last resort"
@@ -339,6 +343,10 @@ module ChapelBase {
339343 inline operator >= (a: uint (64 ), b: uint (64 )) do return __primitive(" >=" , a, b);
340344 inline operator >= (a: real (32 ), b: real (32 )) do return __primitive(" >=" , a, b);
341345 inline operator >= (a: real (64 ), b: real (64 )) do return __primitive(" >=" , a, b);
346+ inline operator >= (a: imag (32 ), b: imag (32 )) do return __primitive(" >=" , _i2r(a), _i2r(b));
347+ inline operator >= (a: imag (64 ), b: imag (64 )) do return __primitive(" >=" , _i2r(a), _i2r(b));
348+ inline operator >= (a: complex (64 ), b: complex (64 )) do compilerError(" ordered comparison of complex numbers is not supported" );
349+ inline operator >= (a: complex (128 ), b: complex (128 )) do compilerError(" ordered comparison of complex numbers is not supported" );
342350 operator >= (a: enum , b: enum ) where (a.type == b.type ) do
343351 return __primitive(" >=" , chpl__enumToOrder(a), chpl__enumToOrder(b));
344352 pragma " last resort"
@@ -357,6 +365,10 @@ module ChapelBase {
357365 inline operator < (a: uint (64 ), b: uint (64 )) do return __primitive(" <" , a, b);
358366 inline operator < (a: real (32 ), b: real (32 )) do return __primitive(" <" , a, b);
359367 inline operator < (a: real (64 ), b: real (64 )) do return __primitive(" <" , a, b);
368+ inline operator < (a: imag (32 ), b: imag (32 )) do return __primitive(" <" , _i2r(a), _i2r(b));
369+ inline operator < (a: imag (64 ), b: imag (64 )) do return __primitive(" <" , _i2r(a), _i2r(b));
370+ inline operator < (a: complex (64 ), b: complex (64 )) do compilerError(" ordered comparison of complex numbers is not supported" );
371+ inline operator < (a: complex (128 ), b: complex (128 )) do compilerError(" ordered comparison of complex numbers is not supported" );
360372 operator < (a: enum , b: enum ) where (a.type == b.type ) do
361373 return __primitive(" <" , chpl__enumToOrder(a), chpl__enumToOrder(b));
362374 pragma " last resort"
@@ -375,6 +387,10 @@ module ChapelBase {
375387 inline operator > (a: uint (64 ), b: uint (64 )) do return __primitive(" >" , a, b);
376388 inline operator > (a: real (32 ), b: real (32 )) do return __primitive(" >" , a, b);
377389 inline operator > (a: real (64 ), b: real (64 )) do return __primitive(" >" , a, b);
390+ inline operator > (a: imag (32 ), b: imag (32 )) do return __primitive(" >" , _i2r(a), _i2r(b));
391+ inline operator > (a: imag (64 ), b: imag (64 )) do return __primitive(" >" , _i2r(a), _i2r(b));
392+ inline operator > (a: complex (64 ), b: complex (64 )) do compilerError(" ordered comparison of complex numbers is not supported" );
393+ inline operator > (a: complex (128 ), b: complex (128 )) do compilerError(" ordered comparison of complex numbers is not supported" );
378394 operator > (a: enum , b: enum ) where (a.type == b.type ) do
379395 return __primitive(" >" , chpl__enumToOrder(a), chpl__enumToOrder(b));
380396 pragma " last resort"
@@ -394,6 +410,10 @@ module ChapelBase {
394410 inline operator <= (param a: enum , param b: enum ) param where (a.type == b.type ) do return __primitive(" <=" , chpl__enumToOrder(a), chpl__enumToOrder(b));
395411 inline operator <= (param a: real (32 ), param b: real (32 )) param do return __primitive(" <=" , a, b);
396412 inline operator <= (param a: real (64 ), param b: real (64 )) param do return __primitive(" <=" , a, b);
413+ inline operator <= (param a: imag (32 ), param b: imag (32 )) param do return __primitive(" <=" , _i2r(a), _i2r(b));
414+ inline operator <= (param a: imag (64 ), param b: imag (64 )) param do return __primitive(" <=" , _i2r(a), _i2r(b));
415+ inline operator <= (param a: complex (64 ), param b: complex (64 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
416+ inline operator <= (param a: complex (128 ), param b: complex (128 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
397417
398418 inline operator >= (param a: int (8 ), param b: int (8 )) param do return __primitive(" >=" , a, b);
399419 inline operator >= (param a: int (16 ), param b: int (16 )) param do return __primitive(" >=" , a, b);
@@ -406,6 +426,10 @@ module ChapelBase {
406426 inline operator >= (param a: enum , param b: enum ) param where (a.type == b.type ) do return __primitive(" >=" , chpl__enumToOrder(a), chpl__enumToOrder(b));
407427 inline operator >= (param a: real (32 ), param b: real (32 )) param do return __primitive(" >=" , a, b);
408428 inline operator >= (param a: real (64 ), param b: real (64 )) param do return __primitive(" >=" , a, b);
429+ inline operator >= (param a: imag (32 ), param b: imag (32 )) param do return __primitive(" >=" , _i2r(a), _i2r(b));
430+ inline operator >= (param a: imag (64 ), param b: imag (64 )) param do return __primitive(" >=" , _i2r(a), _i2r(b));
431+ inline operator >= (param a: complex (64 ), param b: complex (64 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
432+ inline operator >= (param a: complex (128 ), param b: complex (128 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
409433
410434 inline operator < (param a: int (8 ), param b: int (8 )) param do return __primitive(" <" , a, b);
411435 inline operator < (param a: int (16 ), param b: int (16 )) param do return __primitive(" <" , a, b);
@@ -418,6 +442,10 @@ module ChapelBase {
418442 inline operator < (param a: enum , param b: enum ) param where (a.type == b.type ) do return __primitive(" <" , chpl__enumToOrder(a), chpl__enumToOrder(b));
419443 inline operator < (param a: real (32 ), param b: real (32 )) param do return __primitive(" <" , a, b);
420444 inline operator < (param a: real (64 ), param b: real (64 )) param do return __primitive(" <" , a, b);
445+ inline operator < (param a: imag (32 ), param b: imag (32 )) param do return __primitive(" <" , _i2r(a), _i2r(b));
446+ inline operator < (param a: imag (64 ), param b: imag (64 )) param do return __primitive(" <" , _i2r(a), _i2r(b));
447+ inline operator < (param a: complex (64 ), param b: complex (64 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
448+ inline operator < (param a: complex (128 ), param b: complex (128 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
421449
422450 inline operator > (param a: int (8 ), param b: int (8 )) param do return __primitive(" >" , a, b);
423451 inline operator > (param a: int (16 ), param b: int (16 )) param do return __primitive(" >" , a, b);
@@ -430,6 +458,10 @@ module ChapelBase {
430458 inline operator > (param a: enum , param b: enum ) param where (a.type == b.type ) do return __primitive(" >" , chpl__enumToOrder(a), chpl__enumToOrder(b));
431459 inline operator > (param a: real (32 ), param b: real (32 )) param do return __primitive(" >" , a, b);
432460 inline operator > (param a: real (64 ), param b: real (64 )) param do return __primitive(" >" , a, b);
461+ inline operator > (param a: imag (32 ), param b: imag (32 )) param do return __primitive(" >" , _i2r(a), _i2r(b));
462+ inline operator > (param a: imag (64 ), param b: imag (64 )) param do return __primitive(" >" , _i2r(a), _i2r(b));
463+ inline operator > (param a: complex (64 ), param b: complex (64 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
464+ inline operator > (param a: complex (128 ), param b: complex (128 )) param do compilerError(" ordered comparison of complex numbers is not supported" );
433465
434466 //
435467 // unary + and - on primitive types
0 commit comments