@@ -137,7 +137,8 @@ libm_macros::for_each_function! {
137137 fmod, fmodf, frexp, frexpf, ilogb, ilogbf, jn, jnf, ldexp, ldexpf,
138138 lgamma_r, lgammaf_r, modf, modff, nextafter, nextafterf, pow, powf,
139139 remquo, remquof, scalbn, scalbnf, sincos, sincosf, yn, ynf,
140- copysignf16, copysignf128, fabsf16, fabsf128,
140+ copysignf16, copysignf128, fabsf16, fabsf128, ldexpf16, ldexpf128,
141+ scalbnf16, scalbnf128,
141142 ] ,
142143 fn_extra: match MACRO_FN_NAME {
143144 // Remap function names that are different between mpfr and libm
@@ -315,34 +316,6 @@ macro_rules! impl_op_for_ty {
315316 }
316317 }
317318
318- // `ldexp` and `scalbn` are the same for binary floating point, so just forward all
319- // methods.
320- impl MpOp for crate :: op:: [ <ldexp $suffix>] :: Routine {
321- type MpTy = <crate :: op:: [ <scalbn $suffix>] :: Routine as MpOp >:: MpTy ;
322-
323- fn new_mp( ) -> Self :: MpTy {
324- <crate :: op:: [ <scalbn $suffix>] :: Routine as MpOp >:: new_mp( )
325- }
326-
327- fn run( this: & mut Self :: MpTy , input: Self :: RustArgs ) -> Self :: RustRet {
328- <crate :: op:: [ <scalbn $suffix>] :: Routine as MpOp >:: run( this, input)
329- }
330- }
331-
332- impl MpOp for crate :: op:: [ <scalbn $suffix>] :: Routine {
333- type MpTy = MpFloat ;
334-
335- fn new_mp( ) -> Self :: MpTy {
336- new_mpfloat:: <Self :: FTy >( )
337- }
338-
339- fn run( this: & mut Self :: MpTy , input: Self :: RustArgs ) -> Self :: RustRet {
340- this. assign( input. 0 ) ;
341- * this <<= input. 1 ;
342- prep_retval:: <Self :: FTy >( this, Ordering :: Equal )
343- }
344- }
345-
346319 impl MpOp for crate :: op:: [ <sincos $suffix>] :: Routine {
347320 type MpTy = ( MpFloat , MpFloat ) ;
348321
@@ -397,6 +370,34 @@ macro_rules! impl_op_for_ty_all {
397370 prep_retval:: <Self :: RustRet >( & mut this. 0 , Ordering :: Equal )
398371 }
399372 }
373+
374+ // `ldexp` and `scalbn` are the same for binary floating point, so just forward all
375+ // methods.
376+ impl MpOp for crate :: op:: [ <ldexp $suffix>] :: Routine {
377+ type MpTy = <crate :: op:: [ <scalbn $suffix>] :: Routine as MpOp >:: MpTy ;
378+
379+ fn new_mp( ) -> Self :: MpTy {
380+ <crate :: op:: [ <scalbn $suffix>] :: Routine as MpOp >:: new_mp( )
381+ }
382+
383+ fn run( this: & mut Self :: MpTy , input: Self :: RustArgs ) -> Self :: RustRet {
384+ <crate :: op:: [ <scalbn $suffix>] :: Routine as MpOp >:: run( this, input)
385+ }
386+ }
387+
388+ impl MpOp for crate :: op:: [ <scalbn $suffix>] :: Routine {
389+ type MpTy = MpFloat ;
390+
391+ fn new_mp( ) -> Self :: MpTy {
392+ new_mpfloat:: <Self :: FTy >( )
393+ }
394+
395+ fn run( this: & mut Self :: MpTy , input: Self :: RustArgs ) -> Self :: RustRet {
396+ this. assign( input. 0 ) ;
397+ * this <<= input. 1 ;
398+ prep_retval:: <Self :: FTy >( this, Ordering :: Equal )
399+ }
400+ }
400401 }
401402 } ;
402403}
0 commit comments