Skip to content
This repository was archived by the owner on Apr 28, 2025. It is now read-only.

Commit 1fce1e4

Browse files
committed
wip
1 parent 32b518a commit 1fce1e4

File tree

1 file changed

+104
-67
lines changed

1 file changed

+104
-67
lines changed

src/math/generic/scalbn.rs

Lines changed: 104 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
use super::super::support::Hexf;
55
use super::super::{CastFrom, CastInto, Float, IntTy, MinInt};
66

7-
// extern crate std;
8-
// use std::dbg;
7+
#[cfg(not(optimizations_enabled))]
8+
extern crate std;
9+
#[cfg(not(optimizations_enabled))]
10+
use std::dbg;
911

12+
#[cfg(optimizations_enabled)]
1013
macro_rules! dbg {
1114
($($tt:tt)*) => {};
1215
}
@@ -79,79 +82,113 @@ where
7982
// That scale is only 3.
8083
//
8184

82-
n += sig_total_bits as i32;
83-
84-
// let mul = f_exp_min * f_exp_subnorm;
85-
// let add = -exp_min - sig_total_bits as i32;
86-
let mul = f_exp_min;
87-
let add = -exp_min;
85+
let mul = f_exp_min * f_exp_subnorm;
86+
let add = -exp_min - sig_total_bits as i32;
8887
dbg!(Hexf(mul), add);
89-
let mut b = false;
9088

91-
x *= mul;
92-
n += add;
93-
dbg!(Hexf(x), n);
9489
if n < exp_min + sig_total_bits as i32 {
95-
x *= mul;
96-
n += add;
97-
dbg!(Hexf(x), n);
98-
if F::BITS < 32 && false {
90+
x *= f_exp_min;
91+
n += -exp_min;
92+
93+
if n < exp_min + sig_total_bits as i32 {
94+
x *= f_exp_min;
95+
n += -exp_min;
96+
97+
// if n < exp_min + sig_total_bits as i32 {
98+
// x *= f_exp_min;
99+
// n += -exp_min;
100+
101+
// if n < exp_min + sig_total_bits as i32 {
102+
// x *= f_exp_min;
103+
// n += -exp_min;
104+
// }
105+
99106
if n < exp_min {
100-
x *= mul;
101-
n += add;
102-
103-
dbg!(Hexf(x), n);
104-
if n < exp_min {
105-
x *= mul;
106-
n += add;
107-
108-
dbg!(Hexf(x), n);
109-
if n < exp_min {
110-
x *= mul;
111-
n += add;
112-
113-
dbg!(Hexf(x), n);
114-
if n < exp_min {
115-
x *= mul;
116-
n += add;
117-
118-
dbg!(Hexf(x), n);
119-
if n < exp_min {
120-
x *= mul;
121-
n += add;
122-
123-
dbg!(Hexf(x), n);
124-
if n < exp_min {
125-
x *= mul;
126-
n += add;
127-
128-
dbg!(Hexf(x), n);
129-
if n < exp_min {
130-
x *= mul;
131-
n += add;
132-
133-
dbg!(Hexf(x), n);
134-
if n < exp_min {
135-
n = exp_min;
136-
dbg!(Hexf(x), n);
137-
}
138-
}
139-
}
140-
}
141-
}
142-
}
143-
}
107+
n = exp_min;
144108
}
145-
} else if n < exp_min + sig_total_bits as i32 {
146-
n = exp_min;
147-
b = true;
148-
dbg!(Hexf(x), n);
109+
// }
149110
}
150111
}
151112

152-
if !b {
153-
n -= sig_total_bits as i32;
154-
}
113+
// if n < exp_min {
114+
// x *= mul;
115+
// n += add;
116+
// if n < exp_min {
117+
// // x *= mul;
118+
// // n += add;
119+
// }
120+
// }
121+
122+
// // n += sig_total_bits as i32;
123+
124+
// // let mul = f_exp_min;
125+
// // let add = -exp_min;
126+
// let mut b = false;
127+
128+
// x *= mul;
129+
// n += add;
130+
// dbg!(Hexf(x), n);
131+
// if n < exp_min {
132+
// x *= mul;
133+
// n += add;
134+
// dbg!(Hexf(x), n);
135+
// if F::BITS < 32 && false {
136+
// if n < exp_min {
137+
// x *= mul;
138+
// n += add;
139+
140+
// dbg!(Hexf(x), n);
141+
// if n < exp_min {
142+
// x *= mul;
143+
// n += add;
144+
145+
// dbg!(Hexf(x), n);
146+
// if n < exp_min {
147+
// x *= mul;
148+
// n += add;
149+
150+
// dbg!(Hexf(x), n);
151+
// if n < exp_min {
152+
// x *= mul;
153+
// n += add;
154+
155+
// dbg!(Hexf(x), n);
156+
// if n < exp_min {
157+
// x *= mul;
158+
// n += add;
159+
160+
// dbg!(Hexf(x), n);
161+
// if n < exp_min {
162+
// x *= mul;
163+
// n += add;
164+
165+
// dbg!(Hexf(x), n);
166+
// if n < exp_min {
167+
// x *= mul;
168+
// n += add;
169+
170+
// dbg!(Hexf(x), n);
171+
// if n < exp_min {
172+
// n = exp_min;
173+
// dbg!(Hexf(x), n);
174+
// }
175+
// }
176+
// }
177+
// }
178+
// }
179+
// }
180+
// }
181+
// }
182+
// } else if n < exp_min + sig_total_bits as i32 {
183+
// n = exp_min;
184+
// b = true;
185+
// dbg!(Hexf(x), n);
186+
// }
187+
// }
188+
189+
// if !b {
190+
// n -= sig_total_bits as i32;
191+
// }
155192
}
156193

157194
dbg!(Hexf(x), n);

0 commit comments

Comments
 (0)