kececinumbers 0.6.5__py3-none-any.whl → 0.6.7__py3-none-any.whl
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.
- kececinumbers/__init__.py +1 -1
- kececinumbers/_version.py +1 -1
- kececinumbers/kececinumbers.py +45 -10
- {kececinumbers-0.6.5.dist-info → kececinumbers-0.6.7.dist-info}/METADATA +9 -3
- kececinumbers-0.6.7.dist-info/RECORD +10 -0
- tests/test_sample.py +17 -18
- kececinumbers-0.6.5.dist-info/RECORD +0 -10
- {kececinumbers-0.6.5.dist-info → kececinumbers-0.6.7.dist-info}/WHEEL +0 -0
- {kececinumbers-0.6.5.dist-info → kececinumbers-0.6.7.dist-info}/licenses/LICENSE +0 -0
- {kececinumbers-0.6.5.dist-info → kececinumbers-0.6.7.dist-info}/top_level.txt +0 -0
kececinumbers/__init__.py
CHANGED
kececinumbers/_version.py
CHANGED
kececinumbers/kececinumbers.py
CHANGED
@@ -1024,25 +1024,60 @@ def unified_generator(kececi_type: int, start_input_raw: str, add_input_raw: str
|
|
1024
1024
|
try:
|
1025
1025
|
# Her sayı tipi, kendi `elif` bloğu içinde kendi girdisini işler.
|
1026
1026
|
if kececi_type in [TYPE_POSITIVE_REAL, TYPE_NEGATIVE_REAL]:
|
1027
|
-
current_value = int(float(start_input_raw));
|
1027
|
+
current_value = int(float(start_input_raw));
|
1028
|
+
add_value_typed = int(float(add_input_raw));
|
1029
|
+
ask_unit = 1;
|
1030
|
+
use_integer_division = True
|
1028
1031
|
elif kececi_type == TYPE_FLOAT:
|
1029
|
-
current_value = float(start_input_raw);
|
1032
|
+
current_value = float(start_input_raw);
|
1033
|
+
add_value_typed = float(add_input_raw);
|
1034
|
+
ask_unit = 1.0
|
1030
1035
|
elif kececi_type == TYPE_RATIONAL:
|
1031
|
-
current_value = Fraction(start_input_raw);
|
1036
|
+
current_value = Fraction(start_input_raw);
|
1037
|
+
add_value_typed = Fraction(add_input_raw);
|
1038
|
+
ask_unit = Fraction(1)
|
1032
1039
|
elif kececi_type == TYPE_COMPLEX:
|
1033
|
-
current_value = _parse_complex(start_input_raw);
|
1040
|
+
current_value = _parse_complex(start_input_raw);
|
1041
|
+
a_float = float(add_input_raw);
|
1042
|
+
add_value_typed = complex(a_float, a_float);
|
1043
|
+
ask_unit = 1 + 1j
|
1034
1044
|
elif kececi_type == TYPE_QUATERNION:
|
1035
|
-
current_value = _parse_quaternion_from_csv(start_input_raw);
|
1045
|
+
current_value = _parse_quaternion_from_csv(start_input_raw);
|
1046
|
+
add_value_typed = _parse_quaternion_from_csv(add_input_raw);
|
1047
|
+
ask_unit = np.quaternion(1, 1, 1, 1)
|
1036
1048
|
elif kececi_type == TYPE_NEUTROSOPHIC:
|
1037
|
-
a, b = _parse_neutrosophic(start_input_raw);
|
1049
|
+
a, b = _parse_neutrosophic(start_input_raw);
|
1050
|
+
current_value = NeutrosophicNumber(a, b);
|
1051
|
+
a_float = float(add_input_raw);
|
1052
|
+
add_value_typed = NeutrosophicNumber(a_float, 0);
|
1053
|
+
ask_unit = NeutrosophicNumber(1, 1)
|
1038
1054
|
elif kececi_type == TYPE_NEUTROSOPHIC_COMPLEX:
|
1039
|
-
s_complex = _parse_complex(start_input_raw);
|
1055
|
+
s_complex = _parse_complex(start_input_raw);
|
1056
|
+
current_value = NeutrosophicComplexNumber(s_complex.real, s_complex.imag, 0.0);
|
1057
|
+
a_float = float(add_input_raw);
|
1058
|
+
add_value_typed = NeutrosophicComplexNumber(a_float, 0.0, 0.0);
|
1059
|
+
ask_unit = NeutrosophicComplexNumber(1, 1, 1)
|
1040
1060
|
elif kececi_type == TYPE_HYPERREAL:
|
1041
|
-
a, b = _parse_hyperreal(start_input_raw);
|
1061
|
+
a, b = _parse_hyperreal(start_input_raw);
|
1062
|
+
sequence_list = [a + b / n for n in range(1, 11)];
|
1063
|
+
current_value = HyperrealNumber(sequence_list);
|
1064
|
+
a_float = float(add_input_raw);
|
1065
|
+
add_sequence = [a_float] + [0.0] * 9;
|
1066
|
+
add_value_typed = HyperrealNumber(add_sequence);
|
1067
|
+
ask_unit = HyperrealNumber([1.0] * 10)
|
1042
1068
|
elif kececi_type == TYPE_BICOMPLEX:
|
1043
|
-
s_complex = _parse_complex(start_input_raw);
|
1069
|
+
s_complex = _parse_complex(start_input_raw);
|
1070
|
+
a_float = float(add_input_raw);
|
1071
|
+
a_complex = complex(a_float);
|
1072
|
+
current_value = BicomplexNumber(s_complex, s_complex / 2);
|
1073
|
+
add_value_typed = BicomplexNumber(a_complex, a_complex / 2);
|
1074
|
+
ask_unit = BicomplexNumber(complex(1, 1), complex(0.5, 0.5))
|
1044
1075
|
elif kececi_type == TYPE_NEUTROSOPHIC_BICOMPLEX:
|
1045
|
-
s_complex = _parse_complex(start_input_raw);
|
1076
|
+
s_complex = _parse_complex(start_input_raw);
|
1077
|
+
current_value = NeutrosophicBicomplexNumber(s_complex.real, s_complex.imag, 0, 0, 0, 0, 0, 0);
|
1078
|
+
a_float = float(add_input_raw);
|
1079
|
+
add_value_typed = NeutrosophicBicomplexNumber(a_float, 0, 0, 0, 0, 0, 0, 0);
|
1080
|
+
ask_unit = NeutrosophicBicomplexNumber(*([1.0] * 8))
|
1046
1081
|
except (ValueError, TypeError) as e:
|
1047
1082
|
print(f"ERROR: Failed to initialize type {kececi_type} with start='{start_input_raw}' and increment='{add_input_raw}': {e}")
|
1048
1083
|
return []
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: kececinumbers
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.7
|
4
4
|
Summary: Keçeci Numbers: An Exploration of a Dynamic Sequence Across Diverse Number Sets
|
5
5
|
Home-page: https://github.com/WhiteSymmetry/kececinumbers
|
6
6
|
Author: Mehmet Keçeci
|
@@ -41,9 +41,12 @@ Description-Content-Type: text/markdown
|
|
41
41
|
License-File: LICENSE
|
42
42
|
Requires-Dist: numpy
|
43
43
|
Requires-Dist: matplotlib
|
44
|
-
Requires-Dist: numpy-quaternion
|
45
44
|
Requires-Dist: scipy
|
46
45
|
Requires-Dist: sympy
|
46
|
+
Provides-Extra: quaternion-pip
|
47
|
+
Requires-Dist: numpy-quaternion; extra == "quaternion-pip"
|
48
|
+
Provides-Extra: quaternion-conda
|
49
|
+
Requires-Dist: quaternion; extra == "quaternion-conda"
|
47
50
|
Provides-Extra: test
|
48
51
|
Requires-Dist: pytest; extra == "test"
|
49
52
|
Requires-Dist: pytest-cov; extra == "test"
|
@@ -51,9 +54,10 @@ Requires-Dist: pytest-mock; extra == "test"
|
|
51
54
|
Requires-Dist: ruff; extra == "test"
|
52
55
|
Requires-Dist: numpy; extra == "test"
|
53
56
|
Requires-Dist: matplotlib; extra == "test"
|
54
|
-
Requires-Dist: numpy-quaternion; extra == "test"
|
55
57
|
Requires-Dist: scipy; extra == "test"
|
56
58
|
Requires-Dist: sympy; extra == "test"
|
59
|
+
Provides-Extra: all
|
60
|
+
Requires-Dist: numpy-quaternion; extra == "all"
|
57
61
|
Dynamic: author
|
58
62
|
Dynamic: home-page
|
59
63
|
Dynamic: license-file
|
@@ -520,6 +524,8 @@ If this library was useful to you in your research, please cite us. Following th
|
|
520
524
|
|
521
525
|
```
|
522
526
|
|
527
|
+
Loeb, F., & Keçeci, M. (2025). Chaos Slicer: Keçeci Number System. GitHub. https://github.com/numberwonderman/Collatz-box-universes/blob/main/chaosSlicer.html
|
528
|
+
|
523
529
|
Keçeci, M. (2025). Keçeci Varsayımının Kuramsal ve Karşılaştırmalı Analizi. ResearchGate. https://dx.doi.org/10.13140/RG.2.2.21825.88165
|
524
530
|
|
525
531
|
Keçeci, M. (2025). Keçeci Varsayımı'nın Hesaplanabilirliği: Sonlu Adımda Kararlı Yapıya Yakınsama Sorunu. WorkflowHub. https://doi.org/10.48546/workflowhub.document.44.1
|
@@ -0,0 +1,10 @@
|
|
1
|
+
docs/conf.py,sha256=jkpH_TchRJcC_EspKeY1E_rml2ODmIWhWoqvyCPu_ok,1116
|
2
|
+
kececinumbers/__init__.py,sha256=3PmycZDlbfLbEFV8p3mxLr-_5jdRY1NUf6OYvNJTVrk,4225
|
3
|
+
kececinumbers/_version.py,sha256=zQ8KFNeQFvKEDdd8PvxTupP2udoIHt1kUD-v03BQNqw,453
|
4
|
+
kececinumbers/kececinumbers.py,sha256=1e8-wRL4su4dyPtTNwn48EqTDaBR3E1-2kCV69PwIac,60218
|
5
|
+
kececinumbers-0.6.7.dist-info/licenses/LICENSE,sha256=NJZsJEbQuKzxn1mWPWCbRx8jRUqGS22thl8wwuRQJ9c,1071
|
6
|
+
tests/test_sample.py,sha256=vwGbEZ6gcEFq60P5Sqrnc_DVw2QFXOSU1vm3GyzQMnc,9628
|
7
|
+
kececinumbers-0.6.7.dist-info/METADATA,sha256=Gv9PiPmqccJSu44R8yazGWxjJ3zgyEHZTTv5cPBH9UY,34047
|
8
|
+
kececinumbers-0.6.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
9
|
+
kececinumbers-0.6.7.dist-info/top_level.txt,sha256=ABQEKRH9iYb4sWnFdx7gIx7Hg899YktRkQpbRlSSqwU,25
|
10
|
+
kececinumbers-0.6.7.dist-info/RECORD,,
|
tests/test_sample.py
CHANGED
@@ -50,7 +50,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
50
50
|
seq = unified_generator(
|
51
51
|
kececi_type=TYPE_POSITIVE_REAL,
|
52
52
|
start_input_raw="5",
|
53
|
-
|
53
|
+
add_input_raw=3.0,
|
54
54
|
iterations=self.iterations
|
55
55
|
)
|
56
56
|
self.assertTrue(len(seq) > 0)
|
@@ -62,7 +62,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
62
62
|
seq = unified_generator(
|
63
63
|
kececi_type=TYPE_NEGATIVE_REAL,
|
64
64
|
start_input_raw="-7",
|
65
|
-
|
65
|
+
add_input_raw=2.0,
|
66
66
|
iterations=self.iterations
|
67
67
|
)
|
68
68
|
self.assertTrue(len(seq) > 0)
|
@@ -74,7 +74,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
74
74
|
seq = unified_generator(
|
75
75
|
kececi_type=TYPE_FLOAT,
|
76
76
|
start_input_raw="3.14",
|
77
|
-
|
77
|
+
add_input_raw=1.5,
|
78
78
|
iterations=self.iterations
|
79
79
|
)
|
80
80
|
self.assertTrue(len(seq) > 0)
|
@@ -85,7 +85,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
85
85
|
seq = unified_generator(
|
86
86
|
kececi_type=TYPE_COMPLEX,
|
87
87
|
start_input_raw="2+3j",
|
88
|
-
|
88
|
+
add_input_raw=1.0,
|
89
89
|
iterations=self.iterations
|
90
90
|
)
|
91
91
|
self.assertTrue(len(seq) > 0)
|
@@ -98,7 +98,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
98
98
|
seq = unified_generator(
|
99
99
|
kececi_type=TYPE_RATIONAL,
|
100
100
|
start_input_raw="7/3",
|
101
|
-
|
101
|
+
add_input_raw=2.0,
|
102
102
|
iterations=self.iterations
|
103
103
|
)
|
104
104
|
self.assertTrue(len(seq) > 0)
|
@@ -110,8 +110,8 @@ class TestKececiNumbers(unittest.TestCase):
|
|
110
110
|
"""Test sequence generation for quaternions."""
|
111
111
|
seq = unified_generator(
|
112
112
|
kececi_type=TYPE_QUATERNION,
|
113
|
-
start_input_raw="1
|
114
|
-
|
113
|
+
start_input_raw="1.0,2.0,3.0,4.0",
|
114
|
+
add_input_raw="1.0,0,0,0",
|
115
115
|
iterations=self.iterations
|
116
116
|
)
|
117
117
|
self.assertTrue(len(seq) > 0)
|
@@ -120,15 +120,15 @@ class TestKececiNumbers(unittest.TestCase):
|
|
120
120
|
q = seq[0]
|
121
121
|
self.assertAlmostEqual(q.w, 1.0)
|
122
122
|
self.assertAlmostEqual(q.x, 2.0)
|
123
|
-
self.assertAlmostEqual(q.y,
|
124
|
-
self.assertAlmostEqual(q.z,
|
123
|
+
self.assertAlmostEqual(q.y, 3.0)
|
124
|
+
self.assertAlmostEqual(q.z, 4.0)
|
125
125
|
|
126
126
|
def test_neutrosophic_generation(self):
|
127
127
|
"""Test sequence generation for neutrosophic numbers."""
|
128
128
|
seq = unified_generator(
|
129
129
|
kececi_type=TYPE_NEUTROSOPHIC,
|
130
130
|
start_input_raw="5+2I",
|
131
|
-
|
131
|
+
add_input_raw=1.0,
|
132
132
|
iterations=self.iterations
|
133
133
|
)
|
134
134
|
self.assertTrue(len(seq) > 0)
|
@@ -141,7 +141,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
141
141
|
seq = unified_generator(
|
142
142
|
kececi_type=TYPE_NEUTROSOPHIC_COMPLEX,
|
143
143
|
start_input_raw="1-2j",
|
144
|
-
|
144
|
+
add_input_raw=1.0,
|
145
145
|
iterations=self.iterations
|
146
146
|
)
|
147
147
|
self.assertTrue(len(seq) > 0)
|
@@ -155,7 +155,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
155
155
|
seq = unified_generator(
|
156
156
|
kececi_type=TYPE_HYPERREAL,
|
157
157
|
start_input_raw="5+3e",
|
158
|
-
|
158
|
+
add_input_raw=1.0,
|
159
159
|
iterations=self.iterations
|
160
160
|
)
|
161
161
|
self.assertTrue(len(seq) > 0)
|
@@ -167,7 +167,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
167
167
|
seq = unified_generator(
|
168
168
|
kececi_type=TYPE_BICOMPLEX,
|
169
169
|
start_input_raw="2+1j",
|
170
|
-
|
170
|
+
add_input_raw=1.0,
|
171
171
|
iterations=self.iterations
|
172
172
|
)
|
173
173
|
self.assertTrue(len(seq) > 0)
|
@@ -181,7 +181,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
181
181
|
seq = unified_generator(
|
182
182
|
kececi_type=TYPE_NEUTROSOPHIC_BICOMPLEX,
|
183
183
|
start_input_raw="1+2j",
|
184
|
-
|
184
|
+
add_input_raw=1.0,
|
185
185
|
iterations=self.iterations
|
186
186
|
)
|
187
187
|
self.assertTrue(len(seq) > 0)
|
@@ -249,7 +249,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
249
249
|
seq = unified_generator(
|
250
250
|
kececi_type=TYPE_POSITIVE_REAL,
|
251
251
|
start_input_raw="10",
|
252
|
-
|
252
|
+
add_input_raw=2.0,
|
253
253
|
iterations=5
|
254
254
|
)
|
255
255
|
self.assertGreater(len(seq), 5)
|
@@ -262,7 +262,7 @@ class TestKececiNumbers(unittest.TestCase):
|
|
262
262
|
seq = unified_generator(
|
263
263
|
kececi_type=TYPE_FLOAT,
|
264
264
|
start_input_raw="", # empty
|
265
|
-
|
265
|
+
add_input_raw=1.0,
|
266
266
|
iterations=1
|
267
267
|
)
|
268
268
|
self.assertEqual(len(seq), 0) # should fail gracefully
|
@@ -273,11 +273,10 @@ class TestKececiNumbers(unittest.TestCase):
|
|
273
273
|
unified_generator(
|
274
274
|
kececi_type=99, # invalid
|
275
275
|
start_input_raw="0",
|
276
|
-
|
276
|
+
add_input_raw=1.0,
|
277
277
|
iterations=1
|
278
278
|
)
|
279
279
|
|
280
280
|
|
281
281
|
if __name__ == '__main__':
|
282
282
|
unittest.main()
|
283
|
-
|
@@ -1,10 +0,0 @@
|
|
1
|
-
docs/conf.py,sha256=jkpH_TchRJcC_EspKeY1E_rml2ODmIWhWoqvyCPu_ok,1116
|
2
|
-
kececinumbers/__init__.py,sha256=s2_zWrTMEhl--tBf2xp981CSG6Perq4-lUs4zYlaAYY,4225
|
3
|
-
kececinumbers/_version.py,sha256=pzo7Vd3ivKiGiCuF1pOxJt2NbhNXjLrSr8afRu5Wr7o,453
|
4
|
-
kececinumbers/kececinumbers.py,sha256=n7o4NDZlzneIfCTa9j-aXQTX5f_8OpQfMlWprgmnPdk,59763
|
5
|
-
kececinumbers-0.6.5.dist-info/licenses/LICENSE,sha256=NJZsJEbQuKzxn1mWPWCbRx8jRUqGS22thl8wwuRQJ9c,1071
|
6
|
-
tests/test_sample.py,sha256=qMWUBGQtlF1gZHZ_e6Gye1vHtyNnUWH7iXK72a1y6VQ,9728
|
7
|
-
kececinumbers-0.6.5.dist-info/METADATA,sha256=qc2oK-7YzshCBJ64nOL76LKtmWcIF7fK_LDRzTJsLdM,33720
|
8
|
-
kececinumbers-0.6.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
9
|
-
kececinumbers-0.6.5.dist-info/top_level.txt,sha256=ABQEKRH9iYb4sWnFdx7gIx7Hg899YktRkQpbRlSSqwU,25
|
10
|
-
kececinumbers-0.6.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|