@@ -70,12 +70,12 @@ module Data.ByteString.Builder.RealFloat
7070 , generic
7171 ) where
7272
73- import Data.ByteString.Builder.Internal (Builder , byteString )
73+ import Data.ByteString.Builder.Internal (Builder , shortByteString )
7474import qualified Data.ByteString.Builder.RealFloat.Internal as R
75- import qualified Data.ByteString.Char8 as BC
7675import qualified Data.ByteString.Builder.RealFloat.F2S as RF
7776import qualified Data.ByteString.Builder.RealFloat.D2S as RD
7877import qualified Data.ByteString.Builder.Prim as BP
78+ import qualified Data.ByteString.Short as BS
7979import GHC.Float (roundTo )
8080import GHC.Word (Word64 )
8181import GHC.Show (intToDigit )
@@ -265,18 +265,18 @@ showStandard m e prec =
265265 | e <= 0
266266 -> string7 " 0."
267267 <> zeros (- e)
268- <> BP. primBounded BP. word64Dec m
268+ <> buildDigits m
269269 | e >= olength
270- -> BP. primBounded BP. word64Dec m
270+ -> buildDigits m
271271 <> zeros (e - olength)
272272 <> string7 " .0"
273273 | otherwise -> let
274274 wholeDigits = m `div` (10 ^ (olength - e))
275275 fractDigits = m `mod` (10 ^ (olength - e))
276- in BP. primBounded BP. word64Dec wholeDigits
276+ in buildDigits wholeDigits
277277 <> char7 ' .'
278278 <> zeros (olength - e - R. decimalLength17 fractDigits)
279- <> BP. primBounded BP. word64Dec fractDigits
279+ <> buildDigits fractDigits
280280 Just p
281281 | e >= 0 ->
282282 let (ei, is') = roundTo 10 (p' + e) ds
@@ -296,5 +296,6 @@ showStandard m e prec =
296296 ds = digits m
297297 digitsToBuilder = fmap (char7 . intToDigit)
298298
299- zeros n = byteString $ BC .take n $ BC .replicate 308 ' 0 '
299+ zeros n = shortByteString $ BS .take n $ BS .replicate 308 48
300300 olength = R. decimalLength17 m
301+ buildDigits = BP. primBounded BP. word64Dec
0 commit comments