Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added shortest format mode to RealFloat that prints the shortest possible string #635

Open
wants to merge 35 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
332bcf6
improved RealFloat benchmarks
BebeSparkelSparkel Jan 9, 2024
36241cc
better names for RealFloat tests
BebeSparkelSparkel Jan 9, 2024
b3a2276
averaged realfloat specal strings instead of checking each special va…
BebeSparkelSparkel Jan 12, 2024
9a86e45
improved test and add bench for small doubles
BebeSparkelSparkel Jan 12, 2024
a0998bf
improved tests for FStandard
BebeSparkelSparkel Jan 15, 2024
ce7d20e
added better labels to real float tests
BebeSparkelSparkel Jan 15, 2024
b98fc5d
differencated special values from basic values and Float from Double
BebeSparkelSparkel Jan 15, 2024
edd64cd
put float test in the correct group
BebeSparkelSparkel Jan 16, 2024
b20d7a6
combined FloatFormat and FormatMode
BebeSparkelSparkel Jan 7, 2024
b22b6b3
customized FGeneric exponent range
BebeSparkelSparkel Jan 7, 2024
37e8d22
FScientific now has a selectable case E
BebeSparkelSparkel Jan 7, 2024
1b16c67
generaized FloatingDecimal and intermediate
BebeSparkelSparkel Jan 7, 2024
d3cdedc
generailized decimalLength
BebeSparkelSparkel Jan 7, 2024
e11b303
generalized mantissa to Word64
BebeSparkelSparkel Jan 7, 2024
aa15ac2
generalized f2s and d2s
BebeSparkelSparkel Jan 7, 2024
053f87a
added formatFloating which combines the logic of formatFlat and forma…
BebeSparkelSparkel Jan 7, 2024
40f90a4
added SpecialStrings for scientific non-normal float values
BebeSparkelSparkel Jan 7, 2024
b1e3e30
added SpecialStrings to standard floating point non-normal values
BebeSparkelSparkel Jan 7, 2024
945916b
RealFloat optimizations
BebeSparkelSparkel Jan 9, 2024
08c5050
generalized breakdown
BebeSparkelSparkel Jan 9, 2024
d87507b
added some INLINABLE to RealFloat.Internal
BebeSparkelSparkel Jan 9, 2024
0ea0a35
toCharsNonNumbersAndZero now accepts the sign, mantissa, and exponent…
BebeSparkelSparkel Jan 9, 2024
e181e2a
toCharsNonNumberAndZero now takes the float and only uses bit operati…
BebeSparkelSparkel Jan 11, 2024
cbeeef8
removed f2s d2s
BebeSparkelSparkel Jan 12, 2024
bf287a5
removed f2s f2s' f2Intermediate
BebeSparkelSparkel Jan 12, 2024
f399638
removed specialStr and replaced with improved version of toCharsNonNu…
BebeSparkelSparkel Jan 11, 2024
d9ebd68
clean up
BebeSparkelSparkel Jan 12, 2024
bd2b685
cleaned up function formatFloating
BebeSparkelSparkel Jan 12, 2024
a9cbf58
fixed precison printing of zero and neg zero for FStandard
BebeSparkelSparkel Jan 14, 2024
bbd4f76
labels for RealFloat format parameters
BebeSparkelSparkel Jan 16, 2024
a1e556e
fix possible overflow error when converting String to Builder
BebeSparkelSparkel Jan 16, 2024
182d76f
specialized maxEncodeLength to Float and Double
BebeSparkelSparkel Jan 16, 2024
8479796
moved FloatFormat to Internal so that it can be exported and users ca…
BebeSparkelSparkel Jan 16, 2024
67c4cb4
removed mappend
BebeSparkelSparkel Jan 19, 2024
00c66a7
added shortest format mode to RealFloat that prints the shortest poss…
BebeSparkelSparkel Dec 28, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
better names for RealFloat tests
BebeSparkelSparkel committed Jan 9, 2024
commit 36241cca9a0786615b89a2814295f23c41dade9d
84 changes: 42 additions & 42 deletions bench/BenchAll.hs
Original file line number Diff line number Diff line change
@@ -354,53 +354,53 @@ main = do
, bgroup "RealFloat"
[ bgroup "FGeneric"
[ bgroup "Positive"
[ benchB "foldMap (formatFloat generic)" floatPosData $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doublePosData $ foldMap (formatDouble generic)
[ benchB "Float" floatPosData $ foldMap (formatFloat generic)
, benchB "Double" doublePosData $ foldMap (formatDouble generic)
]
, bgroup "Negative"
[ benchB "foldMap (formatFloat generic)" floatNegData $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doubleNegData $ foldMap (formatDouble generic)
[ benchB "Float" floatNegData $ foldMap (formatFloat generic)
, benchB "Double" doubleNegData $ foldMap (formatDouble generic)
]
, bgroup "Special"
[ benchB "foldMap (formatFloat generic)" floatNaN $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doubleNaN $ foldMap (formatDouble generic)
, benchB "foldMap (formatFloat generic)" floatPosInf $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doublePosInf $ foldMap (formatDouble generic)
, benchB "foldMap (formatFloat generic)" floatNegInf $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doubleNegInf $ foldMap (formatDouble generic)
, benchB "foldMap (formatFloat generic)" floatPosZero $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doublePosZero $ foldMap (formatDouble generic)
, benchB "foldMap (formatFloat generic)" floatNegZero $ foldMap (formatFloat generic)
, benchB "foldMap (formatDouble generic)" doubleNegZero $ foldMap (formatDouble generic)
[ benchB "Float NaN" floatNaN $ foldMap (formatFloat generic)
, benchB "Double NaN" doubleNaN $ foldMap (formatDouble generic)
, benchB "Float PosInf" floatPosInf $ foldMap (formatFloat generic)
, benchB "Double PosInf" doublePosInf $ foldMap (formatDouble generic)
, benchB "Float NegInf" floatNegInf $ foldMap (formatFloat generic)
, benchB "Double NegInf" doubleNegInf $ foldMap (formatDouble generic)
, benchB "Float PosZero" floatPosZero $ foldMap (formatFloat generic)
, benchB "Double PosZero" doublePosZero $ foldMap (formatDouble generic)
, benchB "Float NegZero" floatNegZero $ foldMap (formatFloat generic)
, benchB "Double NegZero" doubleNegZero $ foldMap (formatDouble generic)
]
]
, bgroup "FScientific"
[ bgroup "Positive"
[ benchB "foldMap (formatFloat scientific)" floatPosData $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doublePosData $ foldMap (formatDouble scientific)
[ benchB "Float" floatPosData $ foldMap (formatFloat scientific)
, benchB "Double" doublePosData $ foldMap (formatDouble scientific)
]
, bgroup "Negative"
[ benchB "foldMap (formatFloat scientific)" floatNegData $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doubleNegData $ foldMap (formatDouble scientific)
[ benchB "Float" floatNegData $ foldMap (formatFloat scientific)
, benchB "Double" doubleNegData $ foldMap (formatDouble scientific)
]
, bgroup "Special"
[ benchB "foldMap (formatFloat scientific)" floatNaN $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doubleNaN $ foldMap (formatDouble scientific)
, benchB "foldMap (formatFloat scientific)" floatPosInf $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doublePosInf $ foldMap (formatDouble scientific)
, benchB "foldMap (formatFloat scientific)" floatNegInf $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doubleNegInf $ foldMap (formatDouble scientific)
, benchB "foldMap (formatFloat scientific)" floatPosZero $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doublePosZero $ foldMap (formatDouble scientific)
, benchB "foldMap (formatFloat scientific)" floatNegZero $ foldMap (formatFloat scientific)
, benchB "foldMap (formatDouble scientific)" doubleNegZero $ foldMap (formatDouble scientific)
[ benchB "Float NaN" floatNaN $ foldMap (formatFloat scientific)
, benchB "Double NaN" doubleNaN $ foldMap (formatDouble scientific)
, benchB "Float PosInf" floatPosInf $ foldMap (formatFloat scientific)
, benchB "Double PosInf" doublePosInf $ foldMap (formatDouble scientific)
, benchB "Float NegInf" floatNegInf $ foldMap (formatFloat scientific)
, benchB "Double NegInf" doubleNegInf $ foldMap (formatDouble scientific)
, benchB "Float PosZero" floatPosZero $ foldMap (formatFloat scientific)
, benchB "Double PosZero" doublePosZero $ foldMap (formatDouble scientific)
, benchB "Float NegZero" floatNegZero $ foldMap (formatFloat scientific)
, benchB "Double NegZero" doubleNegZero $ foldMap (formatDouble scientific)
]
]
, bgroup "FStandard"
[ bgroup "Positive"
[ bgroup "without"
[ benchB "foldMap (formatFloat standardDefaultPrecision)" floatPosData $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standardDefaultPrecision)" doublePosData $ foldMap (formatDouble standardDefaultPrecision)
[ benchB "Float" floatPosData $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double" doublePosData $ foldMap (formatDouble standardDefaultPrecision)
]
, bgroup "precision"
[ benchB "foldMap (formatFloat (standard 1))" floatPosData $ foldMap (formatFloat (standard 1))
@@ -411,8 +411,8 @@ main = do
]
, bgroup "Negative"
[ bgroup "without"
[ benchB "foldMap (formatFloat standardDefaultPrecision)" floatNegData $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standardDefaultPrecision)" doubleNegData $ foldMap (formatDouble standardDefaultPrecision)
[ benchB "Float" floatNegData $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double" doubleNegData $ foldMap (formatDouble standardDefaultPrecision)
]
, bgroup "precision"
[ benchB "foldMap (formatFloat (standard 1))" floatNegData $ foldMap (formatFloat (standard 1))
@@ -422,16 +422,16 @@ main = do
]
]
, bgroup "Special"
[ benchB "foldMap (formatFloat standard)" floatNaN $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standard)" doubleNaN $ foldMap (formatDouble standardDefaultPrecision)
, benchB "foldMap (formatFloat standard)" floatPosInf $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standard)" doublePosInf $ foldMap (formatDouble standardDefaultPrecision)
, benchB "foldMap (formatFloat standard)" floatNegInf $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standard)" doubleNegInf $ foldMap (formatDouble standardDefaultPrecision)
, benchB "foldMap (formatFloat standard)" floatPosZero $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standard)" doublePosZero $ foldMap (formatDouble standardDefaultPrecision)
, benchB "foldMap (formatFloat standard)" floatNegZero $ foldMap (formatFloat standardDefaultPrecision)
, benchB "foldMap (formatDouble standard)" doubleNegZero $ foldMap (formatDouble standardDefaultPrecision)
[ benchB "Float NaN" floatNaN $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double NaN" doubleNaN $ foldMap (formatDouble standardDefaultPrecision)
, benchB "Float PosInf" floatPosInf $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double PosInf" doublePosInf $ foldMap (formatDouble standardDefaultPrecision)
, benchB "Float NegInf" floatNegInf $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double NegInf" doubleNegInf $ foldMap (formatDouble standardDefaultPrecision)
, benchB "Float PosZero" floatPosZero $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double PosZero" doublePosZero $ foldMap (formatDouble standardDefaultPrecision)
, benchB "Float NegZero" floatNegZero $ foldMap (formatFloat standardDefaultPrecision)
, benchB "Double NegZero" doubleNegZero $ foldMap (formatDouble standardDefaultPrecision)
]
]
]