@@ -9,13 +9,13 @@ use crate::formatter_item_info::{FormatWriter, FormatterItemInfo};
99
1010pub static FORMAT_ITEM_F16 : FormatterItemInfo = FormatterItemInfo {
1111 byte_size : 2 ,
12- print_width : 10 ,
12+ print_width : 16 ,
1313 formatter : FormatWriter :: FloatWriter ( format_item_f16) ,
1414} ;
1515
1616pub static FORMAT_ITEM_F32 : FormatterItemInfo = FormatterItemInfo {
1717 byte_size : 4 ,
18- print_width : 15 ,
18+ print_width : 16 ,
1919 formatter : FormatWriter :: FloatWriter ( format_item_f32) ,
2020} ;
2121
@@ -27,7 +27,7 @@ pub static FORMAT_ITEM_F64: FormatterItemInfo = FormatterItemInfo {
2727
2828pub static FORMAT_ITEM_BF16 : FormatterItemInfo = FormatterItemInfo {
2929 byte_size : 2 ,
30- print_width : 15 ,
30+ print_width : 16 ,
3131 formatter : FormatWriter :: BFloatWriter ( format_item_bf16) ,
3232} ;
3333
@@ -75,13 +75,13 @@ pub fn format_item_bf16(f: f64) -> String {
7575}
7676
7777fn format_f16 ( f : f16 ) -> String {
78- format_float ( f64:: from ( f) , 9 , 4 )
78+ format_float ( f64:: from ( f) , 15 , 8 )
7979}
8080
8181/// formats float with 8 significant digits, eg 12345678 or -1.2345678e+12
8282/// always returns a string of 14 characters
8383fn format_f32 ( f : f32 ) -> String {
84- let width: usize = 14 ;
84+ let width: usize = 15 ;
8585 let precision: usize = 8 ;
8686
8787 if f. classify ( ) == FpCategory :: Subnormal {
@@ -128,78 +128,78 @@ fn format_float(f: f64, width: usize, precision: usize) -> String {
128128#[ allow( clippy:: excessive_precision) ]
129129#[ allow( clippy:: cognitive_complexity) ]
130130fn test_format_f32 ( ) {
131- assert_eq ! ( format_f32( 1.0 ) , " 1.0000000" ) ;
132- assert_eq ! ( format_f32( 9.999_999_0 ) , " 9.9999990" ) ;
133- assert_eq ! ( format_f32( 10.0 ) , " 10.000000" ) ;
134- assert_eq ! ( format_f32( 99.999_977 ) , " 99.999977" ) ;
135- assert_eq ! ( format_f32( 99.999_992 ) , " 99.999992" ) ;
136- assert_eq ! ( format_f32( 100.0 ) , " 100.00000" ) ;
137- assert_eq ! ( format_f32( 999.99994 ) , " 999.99994" ) ;
138- assert_eq ! ( format_f32( 1000.0 ) , " 1000.0000" ) ;
139- assert_eq ! ( format_f32( 9999.9990 ) , " 9999.9990" ) ;
140- assert_eq ! ( format_f32( 10000.0 ) , " 10000.000" ) ;
141- assert_eq ! ( format_f32( 99999.992 ) , " 99999.992" ) ;
142- assert_eq ! ( format_f32( 100_000.0 ) , " 100000.00" ) ;
143- assert_eq ! ( format_f32( 999_999.94 ) , " 999999.94" ) ;
144- assert_eq ! ( format_f32( 1_000_000.0 ) , " 1000000.0" ) ;
145- assert_eq ! ( format_f32( 9_999_999.0 ) , " 9999999.0" ) ;
146- assert_eq ! ( format_f32( 10_000_000.0 ) , " 10000000" ) ;
147- assert_eq ! ( format_f32( 99_999_992.0 ) , " 99999992" ) ;
148- assert_eq ! ( format_f32( 100_000_000.0 ) , " 1.0000000e+8" ) ;
149- assert_eq ! ( format_f32( 9.999_999_4e8 ) , " 9.9999994e+8" ) ;
150- assert_eq ! ( format_f32( 1.0e9 ) , " 1.0000000e+9" ) ;
151- assert_eq ! ( format_f32( 9.999_999_0e9 ) , " 9.9999990e+9" ) ;
152- assert_eq ! ( format_f32( 1.0e10 ) , " 1.0000000e+10" ) ;
153-
154- assert_eq ! ( format_f32( 0.1 ) , " 0.10000000" ) ;
155- assert_eq ! ( format_f32( 0.999_999_94 ) , " 0.99999994" ) ;
156- assert_eq ! ( format_f32( 0.010_000_001 ) , " 1.0000001e-2" ) ;
157- assert_eq ! ( format_f32( 0.099_999_994 ) , " 9.9999994e-2" ) ;
158- assert_eq ! ( format_f32( 0.001 ) , " 1.0000000e-3" ) ;
159- assert_eq ! ( format_f32( 0.009_999_999_8 ) , " 9.9999998e-3" ) ;
160-
161- assert_eq ! ( format_f32( -1.0 ) , " -1.0000000" ) ;
162- assert_eq ! ( format_f32( -9.999_999_0 ) , " -9.9999990" ) ;
163- assert_eq ! ( format_f32( -10.0 ) , " -10.000000" ) ;
164- assert_eq ! ( format_f32( -99.999_977 ) , " -99.999977" ) ;
165- assert_eq ! ( format_f32( -99.999_992 ) , " -99.999992" ) ;
166- assert_eq ! ( format_f32( -100.0 ) , " -100.00000" ) ;
167- assert_eq ! ( format_f32( -999.99994 ) , " -999.99994" ) ;
168- assert_eq ! ( format_f32( -1000.0 ) , " -1000.0000" ) ;
169- assert_eq ! ( format_f32( -9999.9990 ) , " -9999.9990" ) ;
170- assert_eq ! ( format_f32( -10000.0 ) , " -10000.000" ) ;
171- assert_eq ! ( format_f32( -99999.992 ) , " -99999.992" ) ;
172- assert_eq ! ( format_f32( -100_000.0 ) , " -100000.00" ) ;
173- assert_eq ! ( format_f32( -999_999.94 ) , " -999999.94" ) ;
174- assert_eq ! ( format_f32( -1_000_000.0 ) , " -1000000.0" ) ;
175- assert_eq ! ( format_f32( -9_999_999.0 ) , " -9999999.0" ) ;
176- assert_eq ! ( format_f32( -10_000_000.0 ) , " -10000000" ) ;
177- assert_eq ! ( format_f32( -99_999_992.0 ) , " -99999992" ) ;
178- assert_eq ! ( format_f32( -100_000_000.0 ) , " -1.0000000e+8" ) ;
179- assert_eq ! ( format_f32( -9.999_999_4e8 ) , " -9.9999994e+8" ) ;
180- assert_eq ! ( format_f32( -1.0e9 ) , " -1.0000000e+9" ) ;
181- assert_eq ! ( format_f32( -9.999_999_0e9 ) , " -9.9999990e+9" ) ;
182- assert_eq ! ( format_f32( -1.0e10 ) , "-1.0000000e+10" ) ;
183-
184- assert_eq ! ( format_f32( -0.1 ) , " -0.10000000" ) ;
185- assert_eq ! ( format_f32( -0.999_999_94 ) , " -0.99999994" ) ;
186- assert_eq ! ( format_f32( -0.010_000_001 ) , " -1.0000001e-2" ) ;
187- assert_eq ! ( format_f32( -0.099_999_994 ) , " -9.9999994e-2" ) ;
188- assert_eq ! ( format_f32( -0.001 ) , " -1.0000000e-3" ) ;
189- assert_eq ! ( format_f32( -0.009_999_999_8 ) , " -9.9999998e-3" ) ;
190-
191- assert_eq ! ( format_f32( 3.402_823_3e38 ) , " 3.4028233e+38" ) ;
192- assert_eq ! ( format_f32( -3.402_823_3e38 ) , "-3.4028233e+38" ) ;
193- assert_eq ! ( format_f32( -1.166_310_8e-38 ) , "-1.1663108e-38" ) ;
194- assert_eq ! ( format_f32( -4.701_977_1e-38 ) , "-4.7019771e-38" ) ;
195- assert_eq ! ( format_f32( 1e-45 ) , " 1e-45" ) ;
196-
197- assert_eq ! ( format_f32( -3.402_823_466e+38 ) , "-3.4028235e+38" ) ;
198- assert_eq ! ( format_f32( f32 :: NAN ) , " NaN" ) ;
199- assert_eq ! ( format_f32( f32 :: INFINITY ) , " inf" ) ;
200- assert_eq ! ( format_f32( f32 :: NEG_INFINITY ) , " -inf" ) ;
201- assert_eq ! ( format_f32( -0.0 ) , " -0" ) ;
202- assert_eq ! ( format_f32( 0.0 ) , " 0" ) ;
131+ assert_eq ! ( format_f32( 1.0 ) , " 1.0000000" ) ;
132+ assert_eq ! ( format_f32( 9.999_999_0 ) , " 9.9999990" ) ;
133+ assert_eq ! ( format_f32( 10.0 ) , " 10.000000" ) ;
134+ assert_eq ! ( format_f32( 99.999_977 ) , " 99.999977" ) ;
135+ assert_eq ! ( format_f32( 99.999_992 ) , " 99.999992" ) ;
136+ assert_eq ! ( format_f32( 100.0 ) , " 100.00000" ) ;
137+ assert_eq ! ( format_f32( 999.99994 ) , " 999.99994" ) ;
138+ assert_eq ! ( format_f32( 1000.0 ) , " 1000.0000" ) ;
139+ assert_eq ! ( format_f32( 9999.9990 ) , " 9999.9990" ) ;
140+ assert_eq ! ( format_f32( 10000.0 ) , " 10000.000" ) ;
141+ assert_eq ! ( format_f32( 99999.992 ) , " 99999.992" ) ;
142+ assert_eq ! ( format_f32( 100_000.0 ) , " 100000.00" ) ;
143+ assert_eq ! ( format_f32( 999_999.94 ) , " 999999.94" ) ;
144+ assert_eq ! ( format_f32( 1_000_000.0 ) , " 1000000.0" ) ;
145+ assert_eq ! ( format_f32( 9_999_999.0 ) , " 9999999.0" ) ;
146+ assert_eq ! ( format_f32( 10_000_000.0 ) , " 10000000" ) ;
147+ assert_eq ! ( format_f32( 99_999_992.0 ) , " 99999992" ) ;
148+ assert_eq ! ( format_f32( 100_000_000.0 ) , " 1.0000000e+8" ) ;
149+ assert_eq ! ( format_f32( 9.999_999_4e8 ) , " 9.9999994e+8" ) ;
150+ assert_eq ! ( format_f32( 1.0e9 ) , " 1.0000000e+9" ) ;
151+ assert_eq ! ( format_f32( 9.999_999_0e9 ) , " 9.9999990e+9" ) ;
152+ assert_eq ! ( format_f32( 1.0e10 ) , " 1.0000000e+10" ) ;
153+
154+ assert_eq ! ( format_f32( 0.1 ) , " 0.10000000" ) ;
155+ assert_eq ! ( format_f32( 0.999_999_94 ) , " 0.99999994" ) ;
156+ assert_eq ! ( format_f32( 0.010_000_001 ) , " 1.0000001e-2" ) ;
157+ assert_eq ! ( format_f32( 0.099_999_994 ) , " 9.9999994e-2" ) ;
158+ assert_eq ! ( format_f32( 0.001 ) , " 1.0000000e-3" ) ;
159+ assert_eq ! ( format_f32( 0.009_999_999_8 ) , " 9.9999998e-3" ) ;
160+
161+ assert_eq ! ( format_f32( -1.0 ) , " -1.0000000" ) ;
162+ assert_eq ! ( format_f32( -9.999_999_0 ) , " -9.9999990" ) ;
163+ assert_eq ! ( format_f32( -10.0 ) , " -10.000000" ) ;
164+ assert_eq ! ( format_f32( -99.999_977 ) , " -99.999977" ) ;
165+ assert_eq ! ( format_f32( -99.999_992 ) , " -99.999992" ) ;
166+ assert_eq ! ( format_f32( -100.0 ) , " -100.00000" ) ;
167+ assert_eq ! ( format_f32( -999.99994 ) , " -999.99994" ) ;
168+ assert_eq ! ( format_f32( -1000.0 ) , " -1000.0000" ) ;
169+ assert_eq ! ( format_f32( -9999.9990 ) , " -9999.9990" ) ;
170+ assert_eq ! ( format_f32( -10000.0 ) , " -10000.000" ) ;
171+ assert_eq ! ( format_f32( -99999.992 ) , " -99999.992" ) ;
172+ assert_eq ! ( format_f32( -100_000.0 ) , " -100000.00" ) ;
173+ assert_eq ! ( format_f32( -999_999.94 ) , " -999999.94" ) ;
174+ assert_eq ! ( format_f32( -1_000_000.0 ) , " -1000000.0" ) ;
175+ assert_eq ! ( format_f32( -9_999_999.0 ) , " -9999999.0" ) ;
176+ assert_eq ! ( format_f32( -10_000_000.0 ) , " -10000000" ) ;
177+ assert_eq ! ( format_f32( -99_999_992.0 ) , " -99999992" ) ;
178+ assert_eq ! ( format_f32( -100_000_000.0 ) , " -1.0000000e+8" ) ;
179+ assert_eq ! ( format_f32( -9.999_999_4e8 ) , " -9.9999994e+8" ) ;
180+ assert_eq ! ( format_f32( -1.0e9 ) , " -1.0000000e+9" ) ;
181+ assert_eq ! ( format_f32( -9.999_999_0e9 ) , " -9.9999990e+9" ) ;
182+ assert_eq ! ( format_f32( -1.0e10 ) , " -1.0000000e+10" ) ;
183+
184+ assert_eq ! ( format_f32( -0.1 ) , " -0.10000000" ) ;
185+ assert_eq ! ( format_f32( -0.999_999_94 ) , " -0.99999994" ) ;
186+ assert_eq ! ( format_f32( -0.010_000_001 ) , " -1.0000001e-2" ) ;
187+ assert_eq ! ( format_f32( -0.099_999_994 ) , " -9.9999994e-2" ) ;
188+ assert_eq ! ( format_f32( -0.001 ) , " -1.0000000e-3" ) ;
189+ assert_eq ! ( format_f32( -0.009_999_999_8 ) , " -9.9999998e-3" ) ;
190+
191+ assert_eq ! ( format_f32( 3.402_823_3e38 ) , " 3.4028233e+38" ) ;
192+ assert_eq ! ( format_f32( -3.402_823_3e38 ) , " -3.4028233e+38" ) ;
193+ assert_eq ! ( format_f32( -1.166_310_8e-38 ) , " -1.1663108e-38" ) ;
194+ assert_eq ! ( format_f32( -4.701_977_1e-38 ) , " -4.7019771e-38" ) ;
195+ assert_eq ! ( format_f32( 1e-45 ) , " 1e-45" ) ;
196+
197+ assert_eq ! ( format_f32( -3.402_823_466e+38 ) , " -3.4028235e+38" ) ;
198+ assert_eq ! ( format_f32( f32 :: NAN ) , " NaN" ) ;
199+ assert_eq ! ( format_f32( f32 :: INFINITY ) , " inf" ) ;
200+ assert_eq ! ( format_f32( f32 :: NEG_INFINITY ) , " -inf" ) ;
201+ assert_eq ! ( format_f32( -0.0 ) , " -0" ) ;
202+ assert_eq ! ( format_f32( 0.0 ) , " 0" ) ;
203203}
204204
205205#[ test]
@@ -238,25 +238,25 @@ fn test_format_f64() {
238238#[ test]
239239#[ allow( clippy:: cognitive_complexity) ]
240240fn test_format_f16 ( ) {
241- assert_eq ! ( format_f16( f16:: from_bits( 0x8400u16 ) ) , "-6.104e -5" ) ;
242- assert_eq ! ( format_f16( f16:: from_bits( 0x8401u16 ) ) , "-6.109e -5" ) ;
243- assert_eq ! ( format_f16( f16:: from_bits( 0x8402u16 ) ) , "-6.115e -5" ) ;
244- assert_eq ! ( format_f16( f16:: from_bits( 0x8403u16 ) ) , "-6.121e -5" ) ;
245-
246- assert_eq ! ( format_f16( f16:: from_f32( 1.0 ) ) , " 1.000 " ) ;
247- assert_eq ! ( format_f16( f16:: from_f32( 10.0 ) ) , " 10.00 " ) ;
248- assert_eq ! ( format_f16( f16:: from_f32( 100.0 ) ) , " 100.0 " ) ;
249- assert_eq ! ( format_f16( f16:: from_f32( 1000.0 ) ) , " 1000" ) ;
250- assert_eq ! ( format_f16( f16:: from_f32( 10000.0 ) ) , " 1.000e+4 " ) ;
251-
252- assert_eq ! ( format_f16( f16:: from_f32( -0.2 ) ) , " -0.2000 " ) ;
253- assert_eq ! ( format_f16( f16:: from_f32( -0.02 ) ) , "-2.000e -2" ) ;
254-
255- assert_eq ! ( format_f16( f16:: MIN_POSITIVE_SUBNORMAL ) , " 5.960e -8" ) ;
256- assert_eq ! ( format_f16( f16:: MIN ) , "-6.550e+4 " ) ;
257- assert_eq ! ( format_f16( f16:: NAN ) , " NaN" ) ;
258- assert_eq ! ( format_f16( f16:: INFINITY ) , " inf" ) ;
259- assert_eq ! ( format_f16( f16:: NEG_INFINITY ) , " -inf" ) ;
260- assert_eq ! ( format_f16( f16:: NEG_ZERO ) , " -0" ) ;
261- assert_eq ! ( format_f16( f16:: ZERO ) , " 0" ) ;
241+ assert_eq ! ( format_f16( f16:: from_bits( 0x8400u16 ) ) , " -6.1035156e -5" ) ;
242+ assert_eq ! ( format_f16( f16:: from_bits( 0x8401u16 ) ) , " -6.1094761e -5" ) ;
243+ assert_eq ! ( format_f16( f16:: from_bits( 0x8402u16 ) ) , " -6.1154366e -5" ) ;
244+ assert_eq ! ( format_f16( f16:: from_bits( 0x8403u16 ) ) , " -6.1213970e -5" ) ;
245+
246+ assert_eq ! ( format_f16( f16:: from_f32( 1.0 ) ) , " 1.0000000 " ) ;
247+ assert_eq ! ( format_f16( f16:: from_f32( 10.0 ) ) , " 10.000000 " ) ;
248+ assert_eq ! ( format_f16( f16:: from_f32( 100.0 ) ) , " 100.00000 " ) ;
249+ assert_eq ! ( format_f16( f16:: from_f32( 1000.0 ) ) , " 1000.0000 " ) ;
250+ assert_eq ! ( format_f16( f16:: from_f32( 10000.0 ) ) , " 10000.000 " ) ;
251+
252+ assert_eq ! ( format_f16( f16:: from_f32( -0.2 ) ) , " -0.19995117 " ) ;
253+ assert_eq ! ( format_f16( f16:: from_f32( -0.02 ) ) , " -2.0004272e -2" ) ;
254+
255+ assert_eq ! ( format_f16( f16:: MIN_POSITIVE_SUBNORMAL ) , " 5.9604645e -8" ) ;
256+ assert_eq ! ( format_f16( f16:: MIN ) , " -65504.000 " ) ;
257+ assert_eq ! ( format_f16( f16:: NAN ) , " NaN" ) ;
258+ assert_eq ! ( format_f16( f16:: INFINITY ) , " inf" ) ;
259+ assert_eq ! ( format_f16( f16:: NEG_INFINITY ) , " -inf" ) ;
260+ assert_eq ! ( format_f16( f16:: NEG_ZERO ) , " -0" ) ;
261+ assert_eq ! ( format_f16( f16:: ZERO ) , " 0" ) ;
262262}
0 commit comments