mapFolding 0.14.0__tar.gz → 0.14.1__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.
- {mapfolding-0.14.0 → mapfolding-0.14.1}/PKG-INFO +3 -4
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/Z0Z_aOFn.py +0 -1
- mapfolding-0.14.1/mapFolding/_oeisFormulas/matrixMeanders.py +79 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/matrixMeandersAnnex.py +1 -1
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding.egg-info/PKG-INFO +3 -4
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding.egg-info/requires.txt +2 -3
- {mapfolding-0.14.0 → mapfolding-0.14.1}/pyproject.toml +3 -4
- mapfolding-0.14.0/mapFolding/_oeisFormulas/matrixMeanders.py +0 -65
- {mapfolding-0.14.0 → mapfolding-0.14.1}/LICENSE +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/README.md +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A000136.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A000560.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A000682.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A005315.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A005316.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A223094.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A259702.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/A301620.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/Z0Z_oeisMeanders.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_oeisFormulas/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_theSSOT.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/_theTypes.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/basecamp.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/beDRY.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/daoOfMapFolding.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/dataBaskets.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/filesystemToolkit.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/oeis.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/py.typed +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316JavaPort.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316imperative.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316intOptimized.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316optimized128bit.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316primitiveOptimized.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316redis.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/A005316write2disk.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/flattened.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/hunterNumba.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/irvineJavaPort.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/jaxCount.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/jobsCompleted/[2x19]/p2x19.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/jobsCompleted/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/jobsCompleted/p2x19/p2x19.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/lunnonNumpy.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/lunnonWhile.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/matrixMeandersBaseline.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/matrixMeandersBaselineAnnex.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/rotatedEntryPoint.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/reference/total_countPlus1vsPlusN.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/RecipeJob.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/_toolIfThis.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/_toolkitContainers.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/getLLVMforNoReason.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/infoBooth.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/makeAllModules.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/toolkitNumba.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/transformationTools.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/countParallel.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/daoOfMapFolding.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/dataPacking.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/initializeCount.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/theorem2.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/theorem2Numba.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/syntheticModules/theorem2Trimmed.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/__init__.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/conftest.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/test_computations.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/test_filesystem.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/test_oeis.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/test_other.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/tests/test_tasks.py +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding.egg-info/SOURCES.txt +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding.egg-info/dependency_links.txt +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding.egg-info/entry_points.txt +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding.egg-info/top_level.txt +0 -0
- {mapfolding-0.14.0 → mapfolding-0.14.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapFolding
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.1
|
|
4
4
|
Summary: Map folding, meanders, stamp folding, semi-meanders. Experiment with algorithm transformations and code optimization.
|
|
5
5
|
Author-email: Hunter Hogan <HunterHogan@pm.me>
|
|
6
6
|
License: CC-BY-NC-4.0
|
|
@@ -34,15 +34,14 @@ Classifier: Typing :: Typed
|
|
|
34
34
|
Requires-Python: >=3.12
|
|
35
35
|
Description-Content-Type: text/markdown
|
|
36
36
|
License-File: LICENSE
|
|
37
|
-
Requires-Dist: astToolkit
|
|
38
|
-
Requires-Dist: cytoolz
|
|
37
|
+
Requires-Dist: astToolkit
|
|
39
38
|
Requires-Dist: hunterMakesPy
|
|
40
|
-
Requires-Dist: numba
|
|
41
39
|
Requires-Dist: numpy
|
|
42
40
|
Requires-Dist: platformdirs
|
|
43
41
|
Provides-Extra: development
|
|
44
42
|
Requires-Dist: mypy; extra == "development"
|
|
45
43
|
Requires-Dist: pyupgrade; extra == "development"
|
|
44
|
+
Requires-Dist: py-spy; extra == "development"
|
|
46
45
|
Requires-Dist: setuptools-scm; extra == "development"
|
|
47
46
|
Provides-Extra: numba
|
|
48
47
|
Requires-Dist: numba; extra == "numba"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
from mapFolding._oeisFormulas.matrixMeandersAnnex import curveMaximum as curveMaximum
|
|
2
|
+
from typing import NamedTuple
|
|
3
|
+
|
|
4
|
+
class BifurcatedCurves(NamedTuple):
|
|
5
|
+
bifurcationEven: int
|
|
6
|
+
bifurcationOdd: int
|
|
7
|
+
distinctCrossings: int
|
|
8
|
+
curveLocationsMAXIMUM: int
|
|
9
|
+
|
|
10
|
+
dictionaryCurveLocations: dict[int, list[int]] = {}
|
|
11
|
+
|
|
12
|
+
def getCurveLocations(bridges: int) -> list[BifurcatedCurves]:
|
|
13
|
+
global dictionaryCurveLocations # noqa: PLW0603
|
|
14
|
+
curveLocationsMAXIMUM, bifurcationEvenLocator, bifurcationOddLocator = curveMaximum[bridges]
|
|
15
|
+
listBifurcatedCurves: list[BifurcatedCurves] = []
|
|
16
|
+
# TODO This is ready for concurrency and/or vectorization.
|
|
17
|
+
for curveLocations, listDistinctCrossings in dictionaryCurveLocations.items():
|
|
18
|
+
bifurcationEven = (curveLocations & bifurcationEvenLocator) >> 1
|
|
19
|
+
bifurcationOdd = (curveLocations & bifurcationOddLocator)
|
|
20
|
+
distinctCrossings = sum(listDistinctCrossings)
|
|
21
|
+
listBifurcatedCurves.append(BifurcatedCurves(bifurcationEven, bifurcationOdd, distinctCrossings, curveLocationsMAXIMUM))
|
|
22
|
+
dictionaryCurveLocations = {}
|
|
23
|
+
return listBifurcatedCurves
|
|
24
|
+
|
|
25
|
+
def recordAnalysis(curveLocationAnalysis: int, curveLocationsMAXIMUM: int, distinctCrossings: int) -> None:
|
|
26
|
+
if curveLocationAnalysis < curveLocationsMAXIMUM:
|
|
27
|
+
dictionaryCurveLocations.setdefault(curveLocationAnalysis, []).append(distinctCrossings)
|
|
28
|
+
|
|
29
|
+
def analyzeCurve(bifurcationEven: int, bifurcationOdd: int, distinctCrossings: int, curveLocationsMAXIMUM: int) -> None:
|
|
30
|
+
bifurcationEvenFinalZero = (bifurcationEven & 0b1) == 0
|
|
31
|
+
bifurcationEvenHasCurves = bifurcationEven != 1
|
|
32
|
+
bifurcationOddFinalZero = (bifurcationOdd & 0b1) == 0
|
|
33
|
+
bifurcationOddHasCurves = bifurcationOdd != 1
|
|
34
|
+
|
|
35
|
+
if bifurcationEvenHasCurves:
|
|
36
|
+
curveLocationAnalysis = (bifurcationEven >> 1) | (bifurcationOdd << 2) | bifurcationEvenFinalZero
|
|
37
|
+
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
38
|
+
|
|
39
|
+
if bifurcationOddHasCurves:
|
|
40
|
+
curveLocationAnalysis = (bifurcationOdd >> 2) | (bifurcationEven << 3) | (bifurcationOddFinalZero << 1)
|
|
41
|
+
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
42
|
+
|
|
43
|
+
curveLocationAnalysis = ((bifurcationOdd | (bifurcationEven << 1)) << 2) | 3
|
|
44
|
+
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
45
|
+
|
|
46
|
+
if bifurcationEvenHasCurves and bifurcationOddHasCurves and (bifurcationEvenFinalZero or bifurcationOddFinalZero):
|
|
47
|
+
XOrHere2makePair = 0b1
|
|
48
|
+
findUnpairedBinary1 = 0
|
|
49
|
+
|
|
50
|
+
if bifurcationEvenFinalZero and not bifurcationOddFinalZero:
|
|
51
|
+
while findUnpairedBinary1 >= 0:
|
|
52
|
+
XOrHere2makePair <<= 2
|
|
53
|
+
findUnpairedBinary1 += 1 if (bifurcationEven & XOrHere2makePair) == 0 else -1
|
|
54
|
+
bifurcationEven ^= XOrHere2makePair
|
|
55
|
+
|
|
56
|
+
elif bifurcationOddFinalZero and not bifurcationEvenFinalZero:
|
|
57
|
+
while findUnpairedBinary1 >= 0:
|
|
58
|
+
XOrHere2makePair <<= 2
|
|
59
|
+
findUnpairedBinary1 += 1 if (bifurcationOdd & XOrHere2makePair) == 0 else -1
|
|
60
|
+
bifurcationOdd ^= XOrHere2makePair
|
|
61
|
+
|
|
62
|
+
curveLocationAnalysis = ((bifurcationEven >> 2) << 1) | (bifurcationOdd >> 2)
|
|
63
|
+
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
64
|
+
|
|
65
|
+
def initializeCurveLocations(startingCurveLocations: dict[int, int]) -> None:
|
|
66
|
+
global dictionaryCurveLocations # noqa: PLW0603
|
|
67
|
+
dictionaryCurveLocations = {curve: [distinctCrossings] for curve, distinctCrossings in startingCurveLocations.items()}
|
|
68
|
+
|
|
69
|
+
def count(bridges: int, startingCurveLocations: dict[int, int]) -> int:
|
|
70
|
+
initializeCurveLocations(startingCurveLocations)
|
|
71
|
+
|
|
72
|
+
while bridges > 0:
|
|
73
|
+
bridges -= 1
|
|
74
|
+
|
|
75
|
+
# TODO This could be parallelized when `recordAnalysis` is thread-safe
|
|
76
|
+
for bifurcatedCurve in getCurveLocations(bridges):
|
|
77
|
+
analyzeCurve(*bifurcatedCurve)
|
|
78
|
+
|
|
79
|
+
return getCurveLocations(bridges)[0].distinctCrossings
|
|
@@ -35,7 +35,7 @@ curveMaximum: dict[int, limitLocators] = {
|
|
|
35
35
|
25: limitLocators(18014398509481984, 0xaaaaaaaaaaaaaa, 0x55555555555555),
|
|
36
36
|
26: limitLocators(72057594037927936, 0x2aaaaaaaaaaaaaa, 0x155555555555555),
|
|
37
37
|
27: limitLocators(288230376151711744, 0xaaaaaaaaaaaaaaa, 0x555555555555555),
|
|
38
|
-
28: limitLocators(1152921504606846976, 0x2aaaaaaaaaaaaaaa, 0x1555555555555555),
|
|
38
|
+
28: limitLocators(1152921504606846976, 0x2aaaaaaaaaaaaaaa, 0x1555555555555555), # 0x2aaaaaaaaaaaaaaa.bit_length() = 62
|
|
39
39
|
29: limitLocators(4611686018427387904, 0xaaaaaaaaaaaaaaaa, 0x5555555555555555),
|
|
40
40
|
30: limitLocators(18446744073709551616, 0x2aaaaaaaaaaaaaaaa, 0x15555555555555555),
|
|
41
41
|
31: limitLocators(73786976294838206464, 0xaaaaaaaaaaaaaaaaa, 0x55555555555555555),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapFolding
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.1
|
|
4
4
|
Summary: Map folding, meanders, stamp folding, semi-meanders. Experiment with algorithm transformations and code optimization.
|
|
5
5
|
Author-email: Hunter Hogan <HunterHogan@pm.me>
|
|
6
6
|
License: CC-BY-NC-4.0
|
|
@@ -34,15 +34,14 @@ Classifier: Typing :: Typed
|
|
|
34
34
|
Requires-Python: >=3.12
|
|
35
35
|
Description-Content-Type: text/markdown
|
|
36
36
|
License-File: LICENSE
|
|
37
|
-
Requires-Dist: astToolkit
|
|
38
|
-
Requires-Dist: cytoolz
|
|
37
|
+
Requires-Dist: astToolkit
|
|
39
38
|
Requires-Dist: hunterMakesPy
|
|
40
|
-
Requires-Dist: numba
|
|
41
39
|
Requires-Dist: numpy
|
|
42
40
|
Requires-Dist: platformdirs
|
|
43
41
|
Provides-Extra: development
|
|
44
42
|
Requires-Dist: mypy; extra == "development"
|
|
45
43
|
Requires-Dist: pyupgrade; extra == "development"
|
|
44
|
+
Requires-Dist: py-spy; extra == "development"
|
|
46
45
|
Requires-Dist: setuptools-scm; extra == "development"
|
|
47
46
|
Provides-Extra: numba
|
|
48
47
|
Requires-Dist: numba; extra == "numba"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mapFolding"
|
|
3
|
-
version = "0.14.
|
|
3
|
+
version = "0.14.1"
|
|
4
4
|
description = "Map folding, meanders, stamp folding, semi-meanders. Experiment with algorithm transformations and code optimization."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -128,16 +128,15 @@ classifiers = [
|
|
|
128
128
|
urls = { Donate = "https://www.patreon.com/integrated", Homepage = "https://github.com/hunterhogan/mapFolding", Issues = "https://github.com/hunterhogan/mapFolding/issues", Repository = "https://github.com/hunterhogan/mapFolding.git" }
|
|
129
129
|
scripts = { OEIS_for_n = "mapFolding.oeis:OEIS_for_n", clearOEIScache = "mapFolding.oeis:clearOEIScache", getOEISids = "mapFolding.oeis:getOEISids" }
|
|
130
130
|
dependencies = [
|
|
131
|
-
"astToolkit
|
|
132
|
-
"cytoolz",
|
|
131
|
+
"astToolkit",
|
|
133
132
|
"hunterMakesPy",
|
|
134
|
-
"numba",
|
|
135
133
|
"numpy",
|
|
136
134
|
"platformdirs",
|
|
137
135
|
]
|
|
138
136
|
optional-dependencies = { development = [
|
|
139
137
|
"mypy",
|
|
140
138
|
"pyupgrade",
|
|
139
|
+
"py-spy",
|
|
141
140
|
"setuptools-scm",
|
|
142
141
|
], numba = [
|
|
143
142
|
"numba",
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
from mapFolding._oeisFormulas.matrixMeandersAnnex import curveMaximum as curveMaximum
|
|
2
|
-
|
|
3
|
-
dictionaryCurveLocations: dict[int, int] = {}
|
|
4
|
-
|
|
5
|
-
def getCurveLocations() -> dict[int, int]:
|
|
6
|
-
global dictionaryCurveLocations # noqa: PLW0603
|
|
7
|
-
sherpa = dictionaryCurveLocations.copy()
|
|
8
|
-
dictionaryCurveLocations = {}
|
|
9
|
-
return sherpa
|
|
10
|
-
|
|
11
|
-
def recordAnalysis(curveLocationAnalysis: int, curveLocationsMAXIMUM: int, distinctCrossings: int) -> None:
|
|
12
|
-
if curveLocationAnalysis < curveLocationsMAXIMUM:
|
|
13
|
-
dictionaryCurveLocations[curveLocationAnalysis] = dictionaryCurveLocations.get(curveLocationAnalysis, 0) + distinctCrossings
|
|
14
|
-
|
|
15
|
-
def initializeCurveLocations(startingCurveLocations: dict[int, int]) -> None:
|
|
16
|
-
global dictionaryCurveLocations # noqa: PLW0603
|
|
17
|
-
dictionaryCurveLocations = startingCurveLocations.copy()
|
|
18
|
-
|
|
19
|
-
def count(bridges: int, startingCurveLocations: dict[int, int]) -> int:
|
|
20
|
-
initializeCurveLocations(startingCurveLocations)
|
|
21
|
-
|
|
22
|
-
while bridges > 0:
|
|
23
|
-
bridges -= 1
|
|
24
|
-
curveLocationsMAXIMUM, bifurcationEvenLocator, bifurcationOddLocator = curveMaximum[bridges]
|
|
25
|
-
|
|
26
|
-
for curveLocations, distinctCrossings in getCurveLocations().items():
|
|
27
|
-
bifurcationEven = (curveLocations & bifurcationEvenLocator) >> 1
|
|
28
|
-
bifurcationOdd = curveLocations & bifurcationOddLocator
|
|
29
|
-
|
|
30
|
-
bifurcationEvenFinalZero = (bifurcationEven & 0b1) == 0
|
|
31
|
-
bifurcationEvenHasCurves = bifurcationEven != 1
|
|
32
|
-
bifurcationOddFinalZero = (bifurcationOdd & 0b1) == 0
|
|
33
|
-
bifurcationOddHasCurves = bifurcationOdd != 1
|
|
34
|
-
|
|
35
|
-
if bifurcationEvenHasCurves:
|
|
36
|
-
curveLocationAnalysis = (bifurcationEven >> 1) | (bifurcationOdd << 2) | bifurcationEvenFinalZero
|
|
37
|
-
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
38
|
-
|
|
39
|
-
if bifurcationOddHasCurves:
|
|
40
|
-
curveLocationAnalysis = (bifurcationOdd >> 2) | (bifurcationEven << 3) | (bifurcationOddFinalZero << 1)
|
|
41
|
-
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
42
|
-
|
|
43
|
-
curveLocationAnalysis = ((bifurcationOdd | (bifurcationEven << 1)) << 2) | 3
|
|
44
|
-
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
45
|
-
|
|
46
|
-
if bifurcationEvenHasCurves and bifurcationOddHasCurves and (bifurcationEvenFinalZero or bifurcationOddFinalZero):
|
|
47
|
-
XOrHere2makePair = 0b1
|
|
48
|
-
findUnpairedBinary1 = 0
|
|
49
|
-
|
|
50
|
-
if bifurcationEvenFinalZero and not bifurcationOddFinalZero:
|
|
51
|
-
while findUnpairedBinary1 >= 0:
|
|
52
|
-
XOrHere2makePair <<= 2
|
|
53
|
-
findUnpairedBinary1 += 1 if (bifurcationEven & XOrHere2makePair) == 0 else -1
|
|
54
|
-
bifurcationEven ^= XOrHere2makePair
|
|
55
|
-
|
|
56
|
-
elif bifurcationOddFinalZero and not bifurcationEvenFinalZero:
|
|
57
|
-
while findUnpairedBinary1 >= 0:
|
|
58
|
-
XOrHere2makePair <<= 2
|
|
59
|
-
findUnpairedBinary1 += 1 if (bifurcationOdd & XOrHere2makePair) == 0 else -1
|
|
60
|
-
bifurcationOdd ^= XOrHere2makePair
|
|
61
|
-
|
|
62
|
-
curveLocationAnalysis = ((bifurcationEven >> 2) << 1) | (bifurcationOdd >> 2)
|
|
63
|
-
recordAnalysis(curveLocationAnalysis, curveLocationsMAXIMUM, distinctCrossings)
|
|
64
|
-
|
|
65
|
-
return sum(getCurveLocations().values())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/_toolkitContainers.py
RENAMED
|
File without changes
|
{mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/getLLVMforNoReason.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py
RENAMED
|
File without changes
|
{mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/makeJobTheorem2codon.py
RENAMED
|
File without changes
|
|
File without changes
|
{mapfolding-0.14.0 → mapfolding-0.14.1}/mapFolding/someAssemblyRequired/transformationTools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|