@@ -45,8 +45,16 @@ impl ScalarOperand for i128 {}
4545impl ScalarOperand for u128 { }
4646impl ScalarOperand for isize { }
4747impl ScalarOperand for usize { }
48+ #[ cfg( feature = "half" ) ]
49+ impl ScalarOperand for half:: f16 { }
50+ #[ cfg( feature = "half" ) ]
51+ impl ScalarOperand for half:: bf16 { }
4852impl ScalarOperand for f32 { }
4953impl ScalarOperand for f64 { }
54+ #[ cfg( feature = "half" ) ]
55+ impl ScalarOperand for Complex < half:: f16 > { }
56+ #[ cfg( feature = "half" ) ]
57+ impl ScalarOperand for Complex < half:: bf16 > { }
5058impl ScalarOperand for Complex < f32 > { }
5159impl ScalarOperand for Complex < f64 > { }
5260
@@ -468,6 +476,26 @@ mod arithmetic_ops
468476 impl_scalar_lhs_op ! ( bool , Commute , |, BitOr , bitor, "bit or" ) ;
469477 impl_scalar_lhs_op ! ( bool , Commute , ^, BitXor , bitxor, "bit xor" ) ;
470478
479+ #[ cfg( feature = "half" ) ]
480+ mod ops_f16 {
481+ use super :: * ;
482+ impl_scalar_lhs_op ! ( half:: f16, Commute , +, Add , add, "addition" ) ;
483+ impl_scalar_lhs_op ! ( half:: f16, Ordered , -, Sub , sub, "subtraction" ) ;
484+ impl_scalar_lhs_op ! ( half:: f16, Commute , * , Mul , mul, "multiplication" ) ;
485+ impl_scalar_lhs_op ! ( half:: f16, Ordered , /, Div , div, "division" ) ;
486+ impl_scalar_lhs_op ! ( half:: f16, Ordered , %, Rem , rem, "remainder" ) ;
487+ }
488+
489+ #[ cfg( feature = "half" ) ]
490+ mod ops_bf16 {
491+ use super :: * ;
492+ impl_scalar_lhs_op ! ( half:: bf16, Commute , +, Add , add, "addition" ) ;
493+ impl_scalar_lhs_op ! ( half:: bf16, Ordered , -, Sub , sub, "subtraction" ) ;
494+ impl_scalar_lhs_op ! ( half:: bf16, Commute , * , Mul , mul, "multiplication" ) ;
495+ impl_scalar_lhs_op ! ( half:: bf16, Ordered , /, Div , div, "division" ) ;
496+ impl_scalar_lhs_op ! ( half:: bf16, Ordered , %, Rem , rem, "remainder" ) ;
497+ }
498+
471499 impl_scalar_lhs_op ! ( f32 , Commute , +, Add , add, "addition" ) ;
472500 impl_scalar_lhs_op ! ( f32 , Ordered , -, Sub , sub, "subtraction" ) ;
473501 impl_scalar_lhs_op ! ( f32 , Commute , * , Mul , mul, "multiplication" ) ;
@@ -480,6 +508,24 @@ mod arithmetic_ops
480508 impl_scalar_lhs_op ! ( f64 , Ordered , /, Div , div, "division" ) ;
481509 impl_scalar_lhs_op ! ( f64 , Ordered , %, Rem , rem, "remainder" ) ;
482510
511+ #[ cfg( feature = "half" ) ]
512+ mod ops_complex_f16 {
513+ use super :: * ;
514+ impl_scalar_lhs_op ! ( Complex <half:: f16>, Commute , +, Add , add, "addition" ) ;
515+ impl_scalar_lhs_op ! ( Complex <half:: f16>, Ordered , -, Sub , sub, "subtraction" ) ;
516+ impl_scalar_lhs_op ! ( Complex <half:: f16>, Commute , * , Mul , mul, "multiplication" ) ;
517+ impl_scalar_lhs_op ! ( Complex <half:: f16>, Ordered , /, Div , div, "division" ) ;
518+ }
519+
520+ #[ cfg( feature = "half" ) ]
521+ mod ops_complex_bf16 {
522+ use super :: * ;
523+ impl_scalar_lhs_op ! ( Complex <half:: bf16>, Commute , +, Add , add, "addition" ) ;
524+ impl_scalar_lhs_op ! ( Complex <half:: bf16>, Ordered , -, Sub , sub, "subtraction" ) ;
525+ impl_scalar_lhs_op ! ( Complex <half:: bf16>, Commute , * , Mul , mul, "multiplication" ) ;
526+ impl_scalar_lhs_op ! ( Complex <half:: bf16>, Ordered , /, Div , div, "division" ) ;
527+ }
528+
483529 impl_scalar_lhs_op ! ( Complex <f32 >, Commute , +, Add , add, "addition" ) ;
484530 impl_scalar_lhs_op ! ( Complex <f32 >, Ordered , -, Sub , sub, "subtraction" ) ;
485531 impl_scalar_lhs_op ! ( Complex <f32 >, Commute , * , Mul , mul, "multiplication" ) ;
0 commit comments