executable-engineering 0.1.29__tar.gz → 0.1.31__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/PKG-INFO +8 -5
  2. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/__init__.py +3 -0
  3. executable_engineering-0.1.31/executable_engineering/numerical_error_module.py +40 -0
  4. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering.egg-info/PKG-INFO +8 -5
  5. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering.egg-info/SOURCES.txt +1 -0
  6. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering.egg-info/requires.txt +8 -4
  7. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/setup.py +5 -5
  8. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/LICENSE +0 -0
  9. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/README.md +0 -0
  10. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/closedoptimization_module.py +0 -0
  11. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/closedrootfinder_module.py +0 -0
  12. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/gradientoptimization_module.py +0 -0
  13. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/neuralnet_module.py +0 -0
  14. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/openoptimization_module.py +0 -0
  15. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering/openrootfinder_module.py +0 -0
  16. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering.egg-info/dependency_links.txt +0 -0
  17. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/executable_engineering.egg-info/top_level.txt +0 -0
  18. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/pyproject.toml +0 -0
  19. {executable_engineering-0.1.29 → executable_engineering-0.1.31}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: executable_engineering
3
- Version: 0.1.29
3
+ Version: 0.1.31
4
4
  Summary: Tools for ENGPHYS 3NM4
5
5
  Home-page: https://github.com/themintlab/ExecutableEngineering/tree/main/executable_engineering
6
6
  Author: Michael Welland
@@ -14,13 +14,15 @@ License-File: LICENSE
14
14
  Requires-Dist: numpy
15
15
  Requires-Dist: matplotlib
16
16
  Requires-Dist: networkx
17
- Requires-Dist: ipywidgets
18
- Requires-Dist: IPython
19
- Requires-Dist: pyppeteer
20
- Requires-Dist: nbconvert
21
17
  Requires-Dist: scipy
22
18
  Requires-Dist: plotly
23
19
  Requires-Dist: pandas
20
+ Provides-Extra: docs
21
+ Requires-Dist: pyppeteer; extra == "docs"
22
+ Requires-Dist: nbconvert; extra == "docs"
23
+ Provides-Extra: jupyter
24
+ Requires-Dist: ipywidgets; extra == "jupyter"
25
+ Requires-Dist: IPython; extra == "jupyter"
24
26
  Dynamic: author
25
27
  Dynamic: classifier
26
28
  Dynamic: description
@@ -28,6 +30,7 @@ Dynamic: description-content-type
28
30
  Dynamic: home-page
29
31
  Dynamic: license
30
32
  Dynamic: license-file
33
+ Dynamic: provides-extra
31
34
  Dynamic: requires-dist
32
35
  Dynamic: requires-python
33
36
  Dynamic: summary
@@ -4,6 +4,7 @@ from .closedrootfinder_module import RootFinderClosed
4
4
  from .closedoptimization_module import OptimizerClosed
5
5
  from .openoptimization_module import OptimizerOpen
6
6
  from .gradientoptimization_module import OptimizerGrad
7
+ from .numerical_error_module import python_internal_binary, decimal_to_binary
7
8
 
8
9
 
9
10
  __all__ = [
@@ -29,4 +30,6 @@ __all__ = [
29
30
  "OptimizerClosed",
30
31
  "OptimizerOpen",
31
32
  "OptimizerGrad",
33
+ "python_internal_binary",
34
+ "decimal_to_binary",
32
35
  ]
@@ -0,0 +1,40 @@
1
+ import struct
2
+
3
+ def python_internal_binary(num):
4
+ # Pack the float into 8 bytes using IEEE 754 double-precision ('d')
5
+ # The '!' ensures network byte order (big-endian) so bits read left-to-right
6
+ packed_bytes = struct.pack('!d', float(num))
7
+
8
+ # Unpack those bytes as a single 64-bit unsigned integer ('Q')
9
+ packed_int, = struct.unpack('!Q', packed_bytes)
10
+
11
+ # Format the integer as a 64-bit binary string, padded with leading zeros
12
+ binary_str = f"{packed_int:064b}"
13
+
14
+ # Split into the IEEE 754 components for readability
15
+ sign = binary_str[0] # 1 bit
16
+ exponent = binary_str[1:12] # 11 bits
17
+ fraction = binary_str[12:] # 52 bits
18
+
19
+ return f"{sign} {exponent} {fraction}"
20
+
21
+ def decimal_to_binary(num, precision=20):
22
+ sign = "-" if num < 0 else ""
23
+ num = abs(num)
24
+ int_part = int(num)
25
+ frac = num - int_part
26
+ int_str = bin(int_part)[2:]
27
+
28
+ frac_part = ""
29
+ for _ in range(precision):
30
+ if frac == 0:
31
+ break
32
+ frac *= 2
33
+ bit = int(frac)
34
+ frac_part += str(bit)
35
+ frac -= bit
36
+
37
+ if not frac_part:
38
+ frac_part = "0"
39
+
40
+ return f"{sign}{int_str}.{frac_part}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: executable_engineering
3
- Version: 0.1.29
3
+ Version: 0.1.31
4
4
  Summary: Tools for ENGPHYS 3NM4
5
5
  Home-page: https://github.com/themintlab/ExecutableEngineering/tree/main/executable_engineering
6
6
  Author: Michael Welland
@@ -14,13 +14,15 @@ License-File: LICENSE
14
14
  Requires-Dist: numpy
15
15
  Requires-Dist: matplotlib
16
16
  Requires-Dist: networkx
17
- Requires-Dist: ipywidgets
18
- Requires-Dist: IPython
19
- Requires-Dist: pyppeteer
20
- Requires-Dist: nbconvert
21
17
  Requires-Dist: scipy
22
18
  Requires-Dist: plotly
23
19
  Requires-Dist: pandas
20
+ Provides-Extra: docs
21
+ Requires-Dist: pyppeteer; extra == "docs"
22
+ Requires-Dist: nbconvert; extra == "docs"
23
+ Provides-Extra: jupyter
24
+ Requires-Dist: ipywidgets; extra == "jupyter"
25
+ Requires-Dist: IPython; extra == "jupyter"
24
26
  Dynamic: author
25
27
  Dynamic: classifier
26
28
  Dynamic: description
@@ -28,6 +30,7 @@ Dynamic: description-content-type
28
30
  Dynamic: home-page
29
31
  Dynamic: license
30
32
  Dynamic: license-file
33
+ Dynamic: provides-extra
31
34
  Dynamic: requires-dist
32
35
  Dynamic: requires-python
33
36
  Dynamic: summary
@@ -7,6 +7,7 @@ executable_engineering/closedoptimization_module.py
7
7
  executable_engineering/closedrootfinder_module.py
8
8
  executable_engineering/gradientoptimization_module.py
9
9
  executable_engineering/neuralnet_module.py
10
+ executable_engineering/numerical_error_module.py
10
11
  executable_engineering/openoptimization_module.py
11
12
  executable_engineering/openrootfinder_module.py
12
13
  executable_engineering.egg-info/PKG-INFO
@@ -1,10 +1,14 @@
1
1
  numpy
2
2
  matplotlib
3
3
  networkx
4
- ipywidgets
5
- IPython
6
- pyppeteer
7
- nbconvert
8
4
  scipy
9
5
  plotly
10
6
  pandas
7
+
8
+ [docs]
9
+ pyppeteer
10
+ nbconvert
11
+
12
+ [jupyter]
13
+ ipywidgets
14
+ IPython
@@ -6,7 +6,7 @@ long_description = (this_directory / "README.md").read_text(encoding="utf-8")
6
6
 
7
7
  setup(
8
8
  name="executable_engineering",
9
- version="0.1.29",
9
+ version="0.1.31",
10
10
  description="Tools for ENGPHYS 3NM4",
11
11
  long_description=long_description,
12
12
  long_description_content_type="text/markdown",
@@ -18,14 +18,14 @@ setup(
18
18
  "numpy",
19
19
  "matplotlib",
20
20
  "networkx",
21
- "ipywidgets",
22
- "IPython",
23
- "pyppeteer",
24
- "nbconvert",
25
21
  "scipy",
26
22
  "plotly",
27
23
  "pandas",
28
24
  ],
25
+ extras_require={
26
+ "docs": ["pyppeteer", "nbconvert"],
27
+ "jupyter": ["ipywidgets", "IPython"],
28
+ },
29
29
  python_requires=">=3.9",
30
30
  license="MIT",
31
31
  classifiers=[