@@ -1154,4 +1154,54 @@ impl f32 {
11541154 let x = unsafe { cmath:: lgammaf_r ( self , & mut signgamp) } ;
11551155 ( x, signgamp)
11561156 }
1157+
1158+ /// Float addition that allows optimizations based on algebraic rules.
1159+ #[ rustc_allow_incoherent_impl]
1160+ #[ doc( alias = "fadd_algebraic" , alias = "addAlgebraic" ) ]
1161+ #[ must_use = "method returns a new number and does not mutate the original value" ]
1162+ #[ unstable( feature = "float_algebraic" , issue = "21690" ) ]
1163+ #[ inline]
1164+ pub fn add_algebraic ( self , rhs : f32 ) -> f32 {
1165+ intrinsics:: fadd_algebraic ( self , rhs)
1166+ }
1167+
1168+ /// Float subtraction that allows optimizations based on algebraic rules.
1169+ #[ rustc_allow_incoherent_impl]
1170+ #[ doc( alias = "fsub_algebraic" , alias = "subAlgebraic" ) ]
1171+ #[ must_use = "method returns a new number and does not mutate the original value" ]
1172+ #[ unstable( feature = "float_algebraic" , issue = "21690" ) ]
1173+ #[ inline]
1174+ pub fn sub_algebraic ( self , rhs : f32 ) -> f32 {
1175+ intrinsics:: fsub_algebraic ( self , rhs)
1176+ }
1177+
1178+ /// Float multiplication that allows optimizations based on algebraic rules.
1179+ #[ rustc_allow_incoherent_impl]
1180+ #[ doc( alias = "fmul_algebraic" , alias = "mulAlgebraic" ) ]
1181+ #[ must_use = "method returns a new number and does not mutate the original value" ]
1182+ #[ unstable( feature = "float_algebraic" , issue = "21690" ) ]
1183+ #[ inline]
1184+ pub fn mul_algebraic ( self , rhs : f32 ) -> f32 {
1185+ intrinsics:: fmul_algebraic ( self , rhs)
1186+ }
1187+
1188+ /// Float division that allows optimizations based on algebraic rules.
1189+ #[ rustc_allow_incoherent_impl]
1190+ #[ doc( alias = "fdiv_algebraic" , alias = "divAlgebraic" ) ]
1191+ #[ must_use = "method returns a new number and does not mutate the original value" ]
1192+ #[ unstable( feature = "float_algebraic" , issue = "21690" ) ]
1193+ #[ inline]
1194+ pub fn div_algebraic ( self , rhs : f32 ) -> f32 {
1195+ intrinsics:: fdiv_algebraic ( self , rhs)
1196+ }
1197+
1198+ /// Float remainder that allows optimizations based on algebraic rules.
1199+ #[ rustc_allow_incoherent_impl]
1200+ #[ doc( alias = "frem_algebraic" , alias = "remAlgebraic" ) ]
1201+ #[ must_use = "method returns a new number and does not mutate the original value" ]
1202+ #[ unstable( feature = "float_algebraic" , issue = "21690" ) ]
1203+ #[ inline]
1204+ pub fn rem_algebraic ( self , rhs : f32 ) -> f32 {
1205+ intrinsics:: frem_algebraic ( self , rhs)
1206+ }
11571207}
0 commit comments