File: README.md

package info (click to toggle)
haskell-cracknum 1.5-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 124 kB
  • ctags: 2
  • sloc: haskell: 522; makefile: 5
file content (92 lines) | stat: -rw-r--r-- 4,089 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
## CrackNum: Decode/Encode IEE754 Numbers

[![Hackage version](http://img.shields.io/hackage/v/crackNum.svg?label=Hackage)](http://hackage.haskell.org/package/crackNum)
[![Build Status](http://img.shields.io/travis/LeventErkok/crackNum.svg?label=Build)](http://travis-ci.org/LeventErkok/crackNum)

### Command line options:

    crackNum v1.5, (c) Levent Erkok. Released with a BSD3 license.
    Usage: crackNum precision bit/hex-pattern
              --hp        16 bit half     precision
              --sp        32 bit single   precision
              --dp        64 bit double   precision
              --sb         8 bit signed   byte
              --sw        16 bit signed   word
              --sd        32 bit signed   double
              --sq        64 bit signed   quad
              --ub         8 bit unsigned byte
              --uw        16 bit unsigned word
              --ud        32 bit unsigned double
              --uq        64 bit unsigned quad
              --toIEEE=n  Convert from decimal to IEEE SP/DP formats.
      -l n    --lanes=n   number of lanes
      -h, -?  --help      print help, with examples
      -v      --version   print version info
    
    Examples:
    
       crackNum --hp fc00
       crackNum --sp fc00 abcd
       crackNum --dp fc00 abc1 2345 6789
       crackNum --sp 01111111110000000000000000000000
       crackNum -l2 --hp 01111111110000000000000000000000
       crackNum --sb 7f
       crackNum --sp --toIEEE=-2.3e6
       crackNum --dp --toIEEE=max
       crackNum --dp --toIEEE=ulp
    
    Notes:
      - You can use hexadecimal or binary as input.
      - You can use _,- or space as a digit to improve readability.
      - You can give input for multiple lanes, we will guess the #of lanes for you.
        Or, you can specify number of lanes with the -l option.
      - For "toIEEE" option (case doesn't matter):
            - You can enter a number in decimal notation (like 2.3)
            - OR, enter one of the following:
                   * infinity, -infinity: Positive/Negative infinities
                   * nan, snan, qnan: Not-A-Number; signaling/quiet
                   * 0, -0: Both kinds of zeros
                   * max : The maximum finite positive value
                   * -max: The minimum finite negative value
                   * min : The minimum normal positive value
                   * -min: The maximum normal negative value
                   * epsilon: The smallest possible value x s.t. 1+x /= 1.
                   * ulp: The minimum subnormal value

### Example: Decoding single-precision numbers on two lanes

    $ crackNum --sp fc00 abc1 7F80 0001
    == Lane: 1 ==========================================
                      3  2          1         0
                      1 09876543 21098765432109876543210
                      S ---E8--- ----------F23----------
              Binary: 1 11111000 00000001010101111000001
                 Hex: FC00 ABC1
           Precision: SP
                Sign: Negative
            Exponent: 121 (Stored: 248, Bias: 127)
               Value: -2.6723903e36 (NORMAL)
    == Lane: 0 ==========================================
                      3  2          1         0
                      1 09876543 21098765432109876543210
                      S ---E8--- ----------F23----------
              Binary: 0 11111111 00000000000000000000001
                 Hex: 7F80 0001
           Precision: SP
                Sign: Positive
            Exponent: 128 (Stored: 255, Bias: 127)
               Value: NaN (Signaling)
                Note: Representation for NaN's is not unique.

### Example: Encoding a float as a IEEE754 single-precision bit-pattern

    $ crackNum --sp --toIEEE=-2.3e6
                3  2          1         0
                1 09876543 21098765432109876543210
                S ---E8--- ----------F23----------
        Binary: 1 10010100 00011000110000110000000
           Hex: CA0C 6180
     Precision: SP
          Sign: Negative
      Exponent: 21 (Stored: 148, Bias: 127)
         Value: -2300000.0 (NORMAL)