@@ -83,10 +83,12 @@ cfg_if::cfg_if! {
83
83
pub use crate :: android:: log2f32;
84
84
pub use crate :: android:: log2f64;
85
85
} else {
86
+ #[ inline]
86
87
pub fn log2f32( n: f32 ) -> f32 {
87
88
unsafe { crate :: intrinsics:: log2f32( n) }
88
89
}
89
90
91
+ #[ inline]
90
92
pub fn log2f64( n: f64 ) -> f64 {
91
93
unsafe { crate :: intrinsics:: log2f64( n) }
92
94
}
@@ -97,28 +99,29 @@ cfg_if::cfg_if! {
97
99
// because of their non-standard behavior (e.g., log(-n) returns -Inf instead
98
100
// of expected NaN).
99
101
#[ 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 {
121
107
log_fn ( n)
108
+ } else if n == 0.0 {
109
+ f64:: NEG_INFINITY // log(0) = -Inf
110
+ } else {
111
+ f64:: NAN // log(-n) = NaN
122
112
}
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
123
119
}
124
120
}
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