Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 12 additions & 0 deletions common/ieee754_float/ReadMe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!--
SPDX-FileCopyrightText: 2021 KOLANICH
SPDX-License-Identifier: Unlicense
-->

## IEEE 754 floats

These files contain an approximation of Euler number (`2.718281828459045`, as available in `numpy`) serialized into bytes using some formats defined in IEEE 754 / ISO/IEC 60559:2011.

Source: math :).

Generated with [`generate.py`](./generate.py)
Binary file added common/ieee754_float/f16be.ieee754
Binary file not shown.
2 changes: 2 additions & 0 deletions common/ieee754_float/f16be.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
Binary file added common/ieee754_float/f16le.ieee754
Binary file not shown.
2 changes: 2 additions & 0 deletions common/ieee754_float/f16le.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
1 change: 1 addition & 0 deletions common/ieee754_float/f2be.ieee754
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ap
2 changes: 2 additions & 0 deletions common/ieee754_float/f2be.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
1 change: 1 addition & 0 deletions common/ieee754_float/f2le.ieee754
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pA
2 changes: 2 additions & 0 deletions common/ieee754_float/f2le.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
1 change: 1 addition & 0 deletions common/ieee754_float/f4be.ieee754
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@-�T
2 changes: 2 additions & 0 deletions common/ieee754_float/f4be.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
1 change: 1 addition & 0 deletions common/ieee754_float/f4le.ieee754
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
T�-@
2 changes: 2 additions & 0 deletions common/ieee754_float/f4le.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
2 changes: 2 additions & 0 deletions common/ieee754_float/f8be.ieee754
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@�
�Wi
2 changes: 2 additions & 0 deletions common/ieee754_float/f8be.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
2 changes: 2 additions & 0 deletions common/ieee754_float/f8le.ieee754
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
iW�
�@
2 changes: 2 additions & 0 deletions common/ieee754_float/f8le.ieee754.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Uncopyrightable
SPDX-License-Identifier: Unlicense
57 changes: 57 additions & 0 deletions common/ieee754_float/generate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/env python3

from ast import literal_eval
from io import BytesIO
from pathlib import Path
from struct import Struct

import numpy as np

__license__ = "Unlicense"

sizes = (1, 2, 4, 8, 10, 12, 16, 32)
endians = {
"le": "<",
"be": ">"
}

S = Struct("<xxxxxxBB")

vs = {1: Struct("H"), 2: Struct("I")}


def genDTypes():
for e, eM in endians.items():
for s in sizes:
fS = "f" + str(s)
yield eM + fS, fS + e


def main():
d = None
for t, fn in genDTypes():
f = Path(fn + ".ieee754")

try:
a = np.array([np.e], dtype=t)
except BaseException as e:
pass
else:
p = 0
with BytesIO() as b:
np.save(b, a, allow_pickle=False)
d = b.getvalue()

preHeader = d[: S.size]
vMajor, vMinor = S.unpack(preHeader)
p += S.size
headerSizeStruct = vs[vMajor]
headerSize = headerSizeStruct.unpack(d[p : p + headerSizeStruct.size])[0]
p += headerSizeStruct.size + headerSize
actualData = d[p:]

f.write_bytes(actualData)


if __name__ == "__main__":
main()