17
17
use super :: { k_cosf, k_sinf, rem_pio2f} ;
18
18
19
19
/* Small multiples of pi/2 rounded to double precision. */
20
- const PI_2 : f32 = 0.5 * 3.1415926535897931160E+00 ;
21
- const S1PIO2 : f32 = 1.0 * PI_2 ; /* 0x3FF921FB, 0x54442D18 */
22
- const S2PIO2 : f32 = 2.0 * PI_2 ; /* 0x400921FB, 0x54442D18 */
23
- const S3PIO2 : f32 = 3.0 * PI_2 ; /* 0x4012D97C, 0x7F3321D2 */
24
- const S4PIO2 : f32 = 4.0 * PI_2 ; /* 0x401921FB, 0x54442D18 */
20
+ const PI_2 : f64 = 0.5 * 3.1415926535897931160E+00 ;
21
+ const S1PIO2 : f64 = 1.0 * PI_2 ; /* 0x3FF921FB, 0x54442D18 */
22
+ const S2PIO2 : f64 = 2.0 * PI_2 ; /* 0x400921FB, 0x54442D18 */
23
+ const S3PIO2 : f64 = 3.0 * PI_2 ; /* 0x4012D97C, 0x7F3321D2 */
24
+ const S4PIO2 : f64 = 4.0 * PI_2 ; /* 0x401921FB, 0x54442D18 */
25
25
26
26
/// Both the sine and cosine of `x` (f32).
27
27
///
@@ -59,21 +59,21 @@ pub fn sincosf(x: f32) -> (f32, f32) {
59
59
if ix <= 0x4016cbe3 {
60
60
/* |x| ~<= 3pi/4 */
61
61
if sign {
62
- s = -k_cosf ( ( x + S1PIO2 ) as f64 ) ;
63
- c = k_sinf ( ( x + S1PIO2 ) as f64 ) ;
62
+ s = -k_cosf ( x as f64 + S1PIO2 ) ;
63
+ c = k_sinf ( x as f64 + S1PIO2 ) ;
64
64
} else {
65
- s = k_cosf ( ( S1PIO2 - x) as f64 ) ;
66
- c = k_sinf ( ( S1PIO2 - x) as f64 ) ;
65
+ s = k_cosf ( S1PIO2 - x as f64 ) ;
66
+ c = k_sinf ( S1PIO2 - x as f64 ) ;
67
67
}
68
68
}
69
69
/* -sin(x+c) is not correct if x+c could be 0: -0 vs +0 */
70
70
else {
71
71
if sign {
72
- s = -k_sinf ( ( x + S2PIO2 ) as f64 ) ;
73
- c = -k_cosf ( ( x + S2PIO2 ) as f64 ) ;
72
+ s = -k_sinf ( x as f64 + S2PIO2 ) ;
73
+ c = -k_cosf ( x as f64 + S2PIO2 ) ;
74
74
} else {
75
- s = -k_sinf ( ( x - S2PIO2 ) as f64 ) ;
76
- c = -k_cosf ( ( x - S2PIO2 ) as f64 ) ;
75
+ s = -k_sinf ( x as f64 - S2PIO2 ) ;
76
+ c = -k_cosf ( x as f64 - S2PIO2 ) ;
77
77
}
78
78
}
79
79
@@ -85,19 +85,19 @@ pub fn sincosf(x: f32) -> (f32, f32) {
85
85
if ix <= 0x40afeddf {
86
86
/* |x| ~<= 7*pi/4 */
87
87
if sign {
88
- s = k_cosf ( ( x + S3PIO2 ) as f64 ) ;
89
- c = -k_sinf ( ( x + S3PIO2 ) as f64 ) ;
88
+ s = k_cosf ( x as f64 + S3PIO2 ) ;
89
+ c = -k_sinf ( x as f64 + S3PIO2 ) ;
90
90
} else {
91
- s = -k_cosf ( ( x - S3PIO2 ) as f64 ) ;
92
- c = k_sinf ( ( x - S3PIO2 ) as f64 ) ;
91
+ s = -k_cosf ( x as f64 - S3PIO2 ) ;
92
+ c = k_sinf ( x as f64 - S3PIO2 ) ;
93
93
}
94
94
} else {
95
95
if sign {
96
- s = k_sinf ( ( x + S4PIO2 ) as f64 ) ;
97
- c = k_cosf ( ( x + S4PIO2 ) as f64 ) ;
96
+ s = k_sinf ( x as f64 + S4PIO2 ) ;
97
+ c = k_cosf ( x as f64 + S4PIO2 ) ;
98
98
} else {
99
- s = k_sinf ( ( x - S4PIO2 ) as f64 ) ;
100
- c = k_cosf ( ( x - S4PIO2 ) as f64 ) ;
99
+ s = k_sinf ( x as f64 - S4PIO2 ) ;
100
+ c = k_cosf ( x as f64 - S4PIO2 ) ;
101
101
}
102
102
}
103
103
@@ -131,14 +131,6 @@ pub fn sincosf(x: f32) -> (f32, f32) {
131
131
#[ cfg( test) ]
132
132
mod tests {
133
133
use super :: sincosf;
134
- use crate :: _eqf;
135
-
136
- #[ test]
137
- fn with_pi ( ) {
138
- let ( s, c) = sincosf ( core:: f32:: consts:: PI ) ;
139
- _eqf ( s. abs ( ) , 0.0 ) . unwrap ( ) ;
140
- _eqf ( c, -1.0 ) . unwrap ( ) ;
141
- }
142
134
143
135
#[ test]
144
136
fn rotational_symmetry ( ) {
0 commit comments