@@ -83,10 +83,12 @@ cfg_if::cfg_if! {
8383 pub use crate :: android:: log2f32;
8484 pub use crate :: android:: log2f64;
8585 } else {
86+ #[ inline]
8687 pub fn log2f32( n: f32 ) -> f32 {
8788 unsafe { crate :: intrinsics:: log2f32( n) }
8889 }
8990
91+ #[ inline]
9092 pub fn log2f64( n: f64 ) -> f64 {
9193 unsafe { crate :: intrinsics:: log2f64( n) }
9294 }
@@ -97,28 +99,29 @@ cfg_if::cfg_if! {
9799// because of their non-standard behavior (e.g., log(-n) returns -Inf instead
98100// of expected NaN).
99101#[ cfg( not( test) ) ]
100- cfg_if:: cfg_if! {
101- if #[ cfg( any( target_os = "solaris" , target_os = "illumos" ) ) ] {
102- pub fn log_wrapper<F : Fn ( f64 ) -> f64 >( n: f64 , log_fn: F ) -> f64 {
103- if n. is_finite( ) {
104- if n > 0.0 {
105- log_fn( n)
106- } else if n == 0.0 {
107- f64 :: NEG_INFINITY // log(0) = -Inf
108- } else {
109- f64 :: NAN // log(-n) = NaN
110- }
111- } else if n. is_nan( ) {
112- n // log(NaN) = NaN
113- } else if n > 0.0 {
114- n // log(Inf) = Inf
115- } else {
116- f64 :: NAN // log(-Inf) = NaN
117- }
118- }
119- } else {
120- pub fn log_wrapper<F : Fn ( f64 ) -> f64 >( n: f64 , log_fn: F ) -> f64 {
102+ #[ cfg( any( target_os = "solaris" , target_os = "illumos" ) ) ]
103+ #[ inline]
104+ pub fn log_wrapper < F : Fn ( f64 ) -> f64 > ( n : f64 , log_fn : F ) -> f64 {
105+ if n. is_finite ( ) {
106+ if n > 0.0 {
121107 log_fn ( n)
108+ } else if n == 0.0 {
109+ f64:: NEG_INFINITY // log(0) = -Inf
110+ } else {
111+ f64:: NAN // log(-n) = NaN
122112 }
113+ } else if n. is_nan ( ) {
114+ n // log(NaN) = NaN
115+ } else if n > 0.0 {
116+ n // log(Inf) = Inf
117+ } else {
118+ f64:: NAN // log(-Inf) = NaN
123119 }
124120}
121+
122+ #[ cfg( not( test) ) ]
123+ #[ cfg( not( any( target_os = "solaris" , target_os = "illumos" ) ) ) ]
124+ #[ inline]
125+ pub fn log_wrapper < F : Fn ( f64 ) -> f64 > ( n : f64 , log_fn : F ) -> f64 {
126+ log_fn ( n)
127+ }
0 commit comments