kececinumbers 0.7.0__py3-none-any.whl → 0.7.1__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 +3 -1
- kececinumbers/_version.py +1 -1
- kececinumbers/kececinumbers.py +276 -26
- {kececinumbers-0.7.0.dist-info → kececinumbers-0.7.1.dist-info}/METADATA +5 -4
- kececinumbers-0.7.1.dist-info/RECORD +10 -0
- kececinumbers-0.7.0.dist-info/RECORD +0 -10
- {kececinumbers-0.7.0.dist-info → kececinumbers-0.7.1.dist-info}/WHEEL +0 -0
- {kececinumbers-0.7.0.dist-info → kececinumbers-0.7.1.dist-info}/licenses/LICENSE +0 -0
- {kececinumbers-0.7.0.dist-info → kececinumbers-0.7.1.dist-info}/top_level.txt +0 -0
kececinumbers/__init__.py
CHANGED
@@ -22,7 +22,7 @@ import warnings
|
|
22
22
|
# importlib.reload(kececinumbers) # F821 undefined name 'kececinumbers'
|
23
23
|
|
24
24
|
# Paket sürüm numarası
|
25
|
-
__version__ = "0.7.
|
25
|
+
__version__ = "0.7.1"
|
26
26
|
__author__ = "Mehmet Keçeci"
|
27
27
|
__email__ = "mkececi@yaani.com"
|
28
28
|
|
@@ -82,6 +82,7 @@ __all__ = [
|
|
82
82
|
'_is_complex_like',
|
83
83
|
'is_prime_like',
|
84
84
|
'is_near_integer',
|
85
|
+
'_plot_component_distribution',
|
85
86
|
|
86
87
|
|
87
88
|
# --- Core Generation and Analysis ---
|
@@ -180,6 +181,7 @@ try:
|
|
180
181
|
_is_complex_like,
|
181
182
|
is_prime_like,
|
182
183
|
is_near_integer,
|
184
|
+
_plot_component_distribution,
|
183
185
|
|
184
186
|
|
185
187
|
# Constants
|
kececinumbers/_version.py
CHANGED
kececinumbers/kececinumbers.py
CHANGED
@@ -641,18 +641,124 @@ class SedenionNumber:
|
|
641
641
|
return f"({', '.join(map(str, self.coeffs))})"
|
642
642
|
|
643
643
|
@dataclass
|
644
|
+
class CliffordNumber:
|
645
|
+
def __init__(self, basis_dict: Dict[str, float]):
|
646
|
+
"""CliffordNumber constructor."""
|
647
|
+
# Sadece sıfır olmayan değerleri sakla
|
648
|
+
self.basis = {k: float(v) for k, v in basis_dict.items() if abs(float(v)) > 1e-10}
|
649
|
+
|
650
|
+
@property
|
651
|
+
def dimension(self) -> int:
|
652
|
+
"""Vector space dimension'ını otomatik hesaplar."""
|
653
|
+
max_index = 0
|
654
|
+
for key in self.basis.keys():
|
655
|
+
if key: # scalar değilse
|
656
|
+
# '12', '123' gibi string'lerden maksimum rakamı bul
|
657
|
+
if key.isdigit():
|
658
|
+
max_index = max(max_index, max(int(c) for c in key))
|
659
|
+
return max_index
|
660
|
+
|
661
|
+
def __add__(self, other):
|
662
|
+
if isinstance(other, CliffordNumber):
|
663
|
+
new_basis = self.basis.copy()
|
664
|
+
for k, v in other.basis.items():
|
665
|
+
new_basis[k] = new_basis.get(k, 0.0) + v
|
666
|
+
# Sıfıra yakın değerleri temizle
|
667
|
+
if abs(new_basis[k]) < 1e-10:
|
668
|
+
del new_basis[k]
|
669
|
+
return CliffordNumber(new_basis)
|
670
|
+
elif isinstance(other, (int, float)):
|
671
|
+
new_basis = self.basis.copy()
|
672
|
+
new_basis[''] = new_basis.get('', 0.0) + other
|
673
|
+
return CliffordNumber(new_basis)
|
674
|
+
return NotImplemented
|
675
|
+
|
676
|
+
def __sub__(self, other):
|
677
|
+
if isinstance(other, CliffordNumber):
|
678
|
+
new_basis = self.basis.copy()
|
679
|
+
for k, v in other.basis.items():
|
680
|
+
new_basis[k] = new_basis.get(k, 0.0) - v
|
681
|
+
if abs(new_basis[k]) < 1e-10:
|
682
|
+
del new_basis[k]
|
683
|
+
return CliffordNumber(new_basis)
|
684
|
+
elif isinstance(other, (int, float)):
|
685
|
+
new_basis = self.basis.copy()
|
686
|
+
new_basis[''] = new_basis.get('', 0.0) - other
|
687
|
+
return CliffordNumber(new_basis)
|
688
|
+
return NotImplemented
|
689
|
+
|
690
|
+
def __mul__(self, other):
|
691
|
+
if isinstance(other, (int, float)):
|
692
|
+
return CliffordNumber({k: v * other for k, v in self.basis.items()})
|
693
|
+
elif isinstance(other, CliffordNumber):
|
694
|
+
# Basit Clifford çarpımı (e_i^2 = +1 varsayımıyla)
|
695
|
+
new_basis = {}
|
696
|
+
|
697
|
+
for k1, v1 in self.basis.items():
|
698
|
+
for k2, v2 in other.basis.items():
|
699
|
+
# Skaler çarpım
|
700
|
+
if k1 == '':
|
701
|
+
product_key = k2
|
702
|
+
sign = 1.0
|
703
|
+
elif k2 == '':
|
704
|
+
product_key = k1
|
705
|
+
sign = 1.0
|
706
|
+
else:
|
707
|
+
# Vektör çarpımı: e_i * e_j
|
708
|
+
combined = sorted(k1 + k2)
|
709
|
+
product_key = ''.join(combined)
|
710
|
+
|
711
|
+
# Basitleştirilmiş: e_i^2 = +1, anti-commutative
|
712
|
+
sign = 1.0
|
713
|
+
# Burada gerçek Clifford cebir kuralları uygulanmalı
|
714
|
+
|
715
|
+
new_basis[product_key] = new_basis.get(product_key, 0.0) + sign * v1 * v2
|
716
|
+
|
717
|
+
return CliffordNumber(new_basis)
|
718
|
+
return NotImplemented
|
719
|
+
|
720
|
+
def __truediv__(self, other):
|
721
|
+
if isinstance(other, (int, float)):
|
722
|
+
if other == 0:
|
723
|
+
raise ZeroDivisionError("Division by zero")
|
724
|
+
return CliffordNumber({k: v / other for k, v in self.basis.items()})
|
725
|
+
return NotImplemented
|
726
|
+
|
727
|
+
def __str__(self):
|
728
|
+
parts = []
|
729
|
+
if '' in self.basis and abs(self.basis['']) > 1e-10:
|
730
|
+
parts.append(f"{self.basis['']:.2f}")
|
731
|
+
|
732
|
+
sorted_keys = sorted([k for k in self.basis if k != ''], key=lambda x: (len(x), x))
|
733
|
+
for k in sorted_keys:
|
734
|
+
v = self.basis[k]
|
735
|
+
if abs(v) > 1e-10:
|
736
|
+
sign = '+' if v > 0 and parts else ''
|
737
|
+
parts.append(f"{sign}{v:.2f}e{k}")
|
738
|
+
|
739
|
+
result = "".join(parts).replace("+-", "-")
|
740
|
+
return result if result else "0.0"
|
741
|
+
|
742
|
+
@classmethod
|
743
|
+
def parse(cls, s) -> 'CliffordNumber':
|
744
|
+
"""Class method olarak parse metodu"""
|
745
|
+
return _parse_clifford(s)
|
746
|
+
|
747
|
+
def __repr__(self):
|
748
|
+
return self.__str__()
|
749
|
+
"""
|
644
750
|
class CliffordNumber:
|
645
751
|
|
646
752
|
def __init__(self, basis_dict):
|
647
|
-
|
648
|
-
CliffordNumber constructor - sadece basis_dict alır.
|
649
|
-
Dimension property olarak hesaplanabilir.
|
650
|
-
|
753
|
+
|
754
|
+
#CliffordNumber constructor - sadece basis_dict alır.
|
755
|
+
#Dimension property olarak hesaplanabilir.
|
756
|
+
|
651
757
|
self.basis = {k: float(v) for k, v in basis_dict.items()}
|
652
758
|
|
653
759
|
@property
|
654
760
|
def dimension(self):
|
655
|
-
|
761
|
+
#Vector space dimension'ını otomatik hesaplar.
|
656
762
|
if not self.basis:
|
657
763
|
return 0
|
658
764
|
max_index = 0
|
@@ -734,6 +840,7 @@ class CliffordNumber:
|
|
734
840
|
if not parts:
|
735
841
|
return "0.0"
|
736
842
|
return "".join(parts).replace("+-", "-")
|
843
|
+
"""
|
737
844
|
|
738
845
|
|
739
846
|
@dataclass
|
@@ -1412,7 +1519,52 @@ def _parse_sedenion(s: str) -> SedenionNumber:
|
|
1412
1519
|
"""
|
1413
1520
|
|
1414
1521
|
def _parse_clifford(s) -> CliffordNumber:
|
1415
|
-
"""Algebraik string'i
|
1522
|
+
"""Algebraik string'i CliffordNumber'a dönüştürür (ör: '1.0+2.0e1')."""
|
1523
|
+
if isinstance(s, CliffordNumber):
|
1524
|
+
return s
|
1525
|
+
|
1526
|
+
if isinstance(s, (float, int, complex)):
|
1527
|
+
return CliffordNumber({'': float(s)})
|
1528
|
+
|
1529
|
+
if not isinstance(s, str):
|
1530
|
+
s = str(s)
|
1531
|
+
|
1532
|
+
s = s.strip().replace(' ', '').replace('^', '') # ^ işaretini kaldır
|
1533
|
+
basis_dict = {}
|
1534
|
+
|
1535
|
+
# Daha iyi regex pattern: +-1.23e12 formatını yakala
|
1536
|
+
pattern = r'([+-]?)(\d*\.?\d+)(?:e(\d+))?|([+-]?)(?:e(\d+))'
|
1537
|
+
matches = re.findall(pattern, s)
|
1538
|
+
|
1539
|
+
for match in matches:
|
1540
|
+
sign_str, coeff_str, basis1, sign_str2, basis2 = match
|
1541
|
+
|
1542
|
+
# Hangi grup match oldu?
|
1543
|
+
if coeff_str or basis1:
|
1544
|
+
sign = -1.0 if sign_str == '-' else 1.0
|
1545
|
+
coeff = float(coeff_str) if coeff_str else 1.0
|
1546
|
+
basis_key = basis1 if basis1 else ''
|
1547
|
+
else:
|
1548
|
+
sign = -1.0 if sign_str2 == '-' else 1.0
|
1549
|
+
coeff = 1.0
|
1550
|
+
basis_key = basis2
|
1551
|
+
|
1552
|
+
value = sign * coeff
|
1553
|
+
basis_dict[basis_key] = basis_dict.get(basis_key, 0.0) + value
|
1554
|
+
|
1555
|
+
# Ayrıca +e1, -e2 gibi ifadeleri yakala
|
1556
|
+
pattern2 = r'([+-])e(\d+)'
|
1557
|
+
matches2 = re.findall(pattern2, s)
|
1558
|
+
|
1559
|
+
for sign_str, basis_key in matches2:
|
1560
|
+
sign = -1.0 if sign_str == '-' else 1.0
|
1561
|
+
basis_dict[basis_key] = basis_dict.get(basis_key, 0.0) + sign
|
1562
|
+
|
1563
|
+
return CliffordNumber(basis_dict)
|
1564
|
+
"""
|
1565
|
+
|
1566
|
+
def _parse_clifford(s) -> CliffordNumber:
|
1567
|
+
#Algebraik string'i veya sayıyı CliffordNumber'a dönüştürür (ör: '1.0+2.0e1').
|
1416
1568
|
# Eğer zaten CliffordNumber ise doğrudan döndür
|
1417
1569
|
if isinstance(s, CliffordNumber):
|
1418
1570
|
return s
|
@@ -1464,6 +1616,7 @@ def _parse_clifford(s) -> CliffordNumber:
|
|
1464
1616
|
|
1465
1617
|
return CliffordNumber(basis_dict)
|
1466
1618
|
"""
|
1619
|
+
"""
|
1467
1620
|
def _parse_clifford(s: str) -> CliffordNumber:
|
1468
1621
|
#Algebraik string'i CliffordNumber'a dönüştürür (ör: '1.0+2.0e1').
|
1469
1622
|
s = s.strip().replace(' ', '')
|
@@ -3019,6 +3172,36 @@ def is_neutrosophic_like(obj):
|
|
3019
3172
|
(hasattr(obj, 'value') and hasattr(obj, 'indeterminacy')) or \
|
3020
3173
|
(hasattr(obj, 'determinate') and hasattr(obj, 'indeterminate'))
|
3021
3174
|
|
3175
|
+
# Yardımcı fonksiyon: Bileşen dağılımı grafiği
|
3176
|
+
def _plot_component_distribution(ax, elem, all_keys, seq_length=1):
|
3177
|
+
"""Bileşen dağılımını gösterir"""
|
3178
|
+
if seq_length == 1:
|
3179
|
+
# Tek veri noktası için bileşen değerleri
|
3180
|
+
components = []
|
3181
|
+
values = []
|
3182
|
+
|
3183
|
+
for key in all_keys:
|
3184
|
+
if key == '':
|
3185
|
+
components.append('Scalar')
|
3186
|
+
else:
|
3187
|
+
components.append(f'e{key}')
|
3188
|
+
values.append(elem.basis.get(key, 0.0))
|
3189
|
+
|
3190
|
+
bars = ax.bar(components, values, alpha=0.7, color='tab:blue')
|
3191
|
+
ax.set_title("Component Values")
|
3192
|
+
ax.tick_params(axis='x', rotation=45)
|
3193
|
+
|
3194
|
+
for bar in bars:
|
3195
|
+
height = bar.get_height()
|
3196
|
+
if height != 0:
|
3197
|
+
ax.text(bar.get_x() + bar.get_width()/2., height,
|
3198
|
+
f'{height:.2f}', ha='center', va='bottom')
|
3199
|
+
else:
|
3200
|
+
# Çoklu veri ama PCA yapılamıyor
|
3201
|
+
ax.text(0.5, 0.5, f"Need ≥2 data points and ≥2 features\n(Current: {seq_length} points, {len(all_keys)} features)",
|
3202
|
+
ha='center', va='center', transform=ax.transAxes, fontsize=11)
|
3203
|
+
ax.set_title("Insufficient for PCA")
|
3204
|
+
|
3022
3205
|
def plot_numbers(sequence: List[Any], title: str = "Keçeci Number Sequence Analysis"):
|
3023
3206
|
"""
|
3024
3207
|
Tüm 16 Keçeci Sayı türü için detaylı görselleştirme sağlar.
|
@@ -3206,33 +3389,100 @@ def plot_numbers(sequence: List[Any], title: str = "Keçeci Number Sequence Anal
|
|
3206
3389
|
values = {k: [elem.basis.get(k, 0.0) for elem in sequence] for k in all_keys}
|
3207
3390
|
scalar = values.get('', [0]*len(sequence))
|
3208
3391
|
vector_keys = [k for k in all_keys if len(k) == 1]
|
3392
|
+
|
3393
|
+
# numpy import et
|
3394
|
+
try:
|
3395
|
+
import numpy as np
|
3396
|
+
numpy_available = True
|
3397
|
+
except ImportError:
|
3398
|
+
numpy_available = False
|
3399
|
+
|
3400
|
+
# GERÇEK özellik sayısını hesapla (sıfır olmayan bileşenler)
|
3401
|
+
non_zero_features = 0
|
3402
|
+
for key in all_keys:
|
3403
|
+
if any(abs(elem.basis.get(key, 0.0)) > 1e-10 for elem in sequence):
|
3404
|
+
non_zero_features += 1
|
3405
|
+
|
3406
|
+
print(f"Debug: Total keys: {len(all_keys)}, Non-zero features: {non_zero_features}")
|
3407
|
+
|
3408
|
+
# Her zaman 2x2 grid kullan
|
3409
|
+
fig = plt.figure(figsize=(12, 10))
|
3209
3410
|
gs = GridSpec(2, 2, figure=fig)
|
3210
|
-
|
3211
3411
|
ax1 = fig.add_subplot(gs[0, 0])
|
3212
|
-
|
3213
|
-
|
3214
|
-
|
3215
|
-
|
3412
|
+
ax2 = fig.add_subplot(gs[0, 1])
|
3413
|
+
ax3 = fig.add_subplot(gs[1, :])
|
3414
|
+
|
3415
|
+
# 1. Grafik: Skaler ve Vektör Bileşenleri
|
3416
|
+
ax1.plot(scalar, 'o-', label='Scalar', color='black', linewidth=2)
|
3417
|
+
|
3418
|
+
# Sadece sıfır olmayan vektör bileşenlerini göster
|
3419
|
+
visible_vectors = 0
|
3420
|
+
for k in vector_keys:
|
3421
|
+
if any(abs(v) > 1e-10 for v in values[k]):
|
3422
|
+
ax1.plot(values[k], 'o-', label=f'Vec {k}', alpha=0.7, linewidth=1.5)
|
3423
|
+
visible_vectors += 1
|
3424
|
+
if visible_vectors >= 3:
|
3425
|
+
break
|
3426
|
+
|
3427
|
+
ax1.set_title("Scalar & Vector Components Over Time")
|
3216
3428
|
ax1.legend()
|
3429
|
+
ax1.grid(True, alpha=0.3)
|
3217
3430
|
|
3218
|
-
|
3431
|
+
# 2. Grafik: Bivector Magnitude
|
3219
3432
|
bivector_mags = [sum(v**2 for k, v in elem.basis.items() if len(k) == 2)**0.5 for elem in sequence]
|
3220
|
-
ax2.plot(bivector_mags, 'o-', color='tab:green')
|
3221
|
-
ax2.set_title("Bivector Magnitude")
|
3433
|
+
ax2.plot(bivector_mags, 'o-', color='tab:green', linewidth=2, label='Bivector Magnitude')
|
3434
|
+
ax2.set_title("Bivector Magnitude Over Time")
|
3435
|
+
ax2.legend()
|
3436
|
+
ax2.grid(True, alpha=0.3)
|
3222
3437
|
|
3223
|
-
|
3224
|
-
|
3225
|
-
|
3226
|
-
|
3227
|
-
|
3438
|
+
# 3. Grafik: PCA - ARTIK PCA GÖSTERİYORUZ
|
3439
|
+
if len(sequence) >= 2 and non_zero_features >= 2:
|
3440
|
+
# PCA yapılabilir durumda
|
3441
|
+
try:
|
3442
|
+
from sklearn.decomposition import PCA
|
3443
|
+
|
3444
|
+
# Tüm bileşenleri içeren matris oluştur
|
3445
|
+
matrix_data = []
|
3446
|
+
for elem in sequence:
|
3447
|
+
row = []
|
3448
|
+
for key in all_keys:
|
3449
|
+
row.append(elem.basis.get(key, 0.0))
|
3450
|
+
matrix_data.append(row)
|
3451
|
+
|
3452
|
+
if numpy_available:
|
3453
|
+
matrix = np.array(matrix_data)
|
3454
|
+
else:
|
3455
|
+
import numpy as np
|
3456
|
+
matrix = np.array(matrix_data)
|
3457
|
+
|
3458
|
+
# PCA uygula
|
3459
|
+
pca = PCA(n_components=min(2, matrix.shape[1]))
|
3228
3460
|
proj = pca.fit_transform(matrix)
|
3229
|
-
|
3230
|
-
sc = ax3.scatter(proj[:, 0], proj[:, 1], c=range(len(proj)),
|
3231
|
-
|
3232
|
-
|
3233
|
-
|
3234
|
-
|
3235
|
-
|
3461
|
+
|
3462
|
+
sc = ax3.scatter(proj[:, 0], proj[:, 1], c=range(len(proj)),
|
3463
|
+
cmap='plasma', s=50, alpha=0.8)
|
3464
|
+
ax3.set_title(f"PCA Projection ({non_zero_features} features)\nVariance: {pca.explained_variance_ratio_[0]:.3f}, {pca.explained_variance_ratio_[1]:.3f}")
|
3465
|
+
|
3466
|
+
cbar = plt.colorbar(sc, ax=ax3)
|
3467
|
+
cbar.set_label("Time Step")
|
3468
|
+
|
3469
|
+
ax3.plot(proj[:, 0], proj[:, 1], 'gray', linestyle='--', alpha=0.5)
|
3470
|
+
ax3.grid(True, alpha=0.3)
|
3471
|
+
|
3472
|
+
except ImportError:
|
3473
|
+
ax3.text(0.5, 0.5, "Install sklearn for PCA",
|
3474
|
+
ha='center', va='center', transform=ax3.transAxes)
|
3475
|
+
except Exception as e:
|
3476
|
+
ax3.text(0.5, 0.5, f"PCA Error: {str(e)[:30]}",
|
3477
|
+
ha='center', va='center', transform=ax3.transAxes)
|
3478
|
+
else:
|
3479
|
+
# PCA yapılamazsa bilgi göster
|
3480
|
+
ax3.text(0.5, 0.5, f"Need ≥2 data points and ≥2 features\n(Current: {len(sequence)} points, {non_zero_features} features)",
|
3481
|
+
ha='center', va='center', transform=ax3.transAxes)
|
3482
|
+
ax3.set_title("Insufficient for PCA")
|
3483
|
+
|
3484
|
+
#plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
|
3485
|
+
|
3236
3486
|
|
3237
3487
|
# --- 8. DualNumber
|
3238
3488
|
elif hasattr(first_elem, 'real') and hasattr(first_elem, 'dual'):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: kececinumbers
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.1
|
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
|
@@ -141,7 +141,7 @@ This library provides a unified algorithm that operates on 16 different number t
|
|
141
141
|
<details>
|
142
142
|
<summary>🇹🇷 Türkçe Açıklama (Click to expand)</summary>
|
143
143
|
|
144
|
-
**Keçeci Sayıları**, Collatz Varsayımı'ndan esinlenen ve farklı sayı sistemlerinde dinamik diziler üreten, analiz eden ve görselleştiren bir Python kütüphanesidir. Bu kütüphane, tamsayılardan karmaşık sayılara, kuaterniyonlardan nötrosofik sayılara kadar
|
144
|
+
**Keçeci Sayıları**, Collatz Varsayımı'ndan esinlenen ve farklı sayı sistemlerinde dinamik diziler üreten, analiz eden ve görselleştiren bir Python kütüphanesidir. Bu kütüphane, tamsayılardan karmaşık sayılara, kuaterniyonlardan nötrosofik sayılara kadar 16 farklı sayı türü üzerinde çalışan birleşik bir algoritma sunar. Akademik araştırmalar ve sayı teorisindeki keşifler için bir araç olarak tasarlanmıştır.
|
145
145
|
|
146
146
|
</details>
|
147
147
|
|
@@ -165,7 +165,7 @@ This flexible mechanism provides a rich framework for studying the behavior of n
|
|
165
165
|
* **Advanced Visualization:** Provides a multi-dimensional `plot_numbers` function tailored to the nature of each number system.
|
166
166
|
* **Keçeci Prime Number (KPN) Analysis:** Identifies the most recurring prime representation in sequences to analyze their convergence behavior.
|
167
167
|
* **Interactive and Programmatic Usage:** Supports both interactive parameter input (`get_interactive`) and direct use in scripts (`get_with_params`).
|
168
|
-
* 0.
|
168
|
+
* 0.7.1: 16 Numbers
|
169
169
|
* 0.6.7: 11 Numbers
|
170
170
|
|
171
171
|
---
|
@@ -367,7 +367,8 @@ if seq_interactive:
|
|
367
367
|
type_names = [
|
368
368
|
"Positive Real", "Negative Real", "Complex", "Float", "Rational",
|
369
369
|
"Quaternion", "Neutrosophic", "Neutro-Complex", "Hyperreal",
|
370
|
-
"Bicomplex", "Neutro-Bicomplex"
|
370
|
+
"Bicomplex", "Neutro-Bicomplex", "Octonion", "Sedenion", "Clifford",
|
371
|
+
"Dual", "Split-Complex"
|
371
372
|
]
|
372
373
|
# type_name'i params sözlüğüne ekleyerek raporu zenginleştirelim
|
373
374
|
params['type_name'] = type_names[type_choice - 1]
|
@@ -0,0 +1,10 @@
|
|
1
|
+
docs/conf.py,sha256=jkpH_TchRJcC_EspKeY1E_rml2ODmIWhWoqvyCPu_ok,1116
|
2
|
+
kececinumbers/__init__.py,sha256=xu86m_9hyxJEAJzn0rNqD2fee1KHv68S_lH-C2tgWj4,8473
|
3
|
+
kececinumbers/_version.py,sha256=UKtHtm7N84E6BrPGq2nQkqcNcflKksJqe_V-1gJwHb0,453
|
4
|
+
kececinumbers/kececinumbers.py,sha256=eak738SZHtoO9lwHi_DbNGNhSKoIHrYdmWR7RY0E9WA,149453
|
5
|
+
kececinumbers-0.7.1.dist-info/licenses/LICENSE,sha256=NJZsJEbQuKzxn1mWPWCbRx8jRUqGS22thl8wwuRQJ9c,1071
|
6
|
+
tests/test_sample.py,sha256=vwGbEZ6gcEFq60P5Sqrnc_DVw2QFXOSU1vm3GyzQMnc,9628
|
7
|
+
kececinumbers-0.7.1.dist-info/METADATA,sha256=Us-mqQxpWZBP6CqiDL0CDXyGCeQroeELkZ9twGkT-QA,34956
|
8
|
+
kececinumbers-0.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
9
|
+
kececinumbers-0.7.1.dist-info/top_level.txt,sha256=ABQEKRH9iYb4sWnFdx7gIx7Hg899YktRkQpbRlSSqwU,25
|
10
|
+
kececinumbers-0.7.1.dist-info/RECORD,,
|
@@ -1,10 +0,0 @@
|
|
1
|
-
docs/conf.py,sha256=jkpH_TchRJcC_EspKeY1E_rml2ODmIWhWoqvyCPu_ok,1116
|
2
|
-
kececinumbers/__init__.py,sha256=xH57meQp1_XJkvhPk0xhcWY4JDdjJqczGZyquQp3FhU,8399
|
3
|
-
kececinumbers/_version.py,sha256=IsAwgEBGv0MCYhqJB1-8JcWqXvpe5XS3aoGM-R-nIjA,453
|
4
|
-
kececinumbers/kececinumbers.py,sha256=ZpYyo8TETrUJHoRmYnu2TKFc68NBzAcSpaZn83_SoCw,139756
|
5
|
-
kececinumbers-0.7.0.dist-info/licenses/LICENSE,sha256=NJZsJEbQuKzxn1mWPWCbRx8jRUqGS22thl8wwuRQJ9c,1071
|
6
|
-
tests/test_sample.py,sha256=vwGbEZ6gcEFq60P5Sqrnc_DVw2QFXOSU1vm3GyzQMnc,9628
|
7
|
-
kececinumbers-0.7.0.dist-info/METADATA,sha256=TdCKhEYrttkHoujp12aH2W0F2Esf_V4OSJ8UBnyKdgU,34887
|
8
|
-
kececinumbers-0.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
9
|
-
kececinumbers-0.7.0.dist-info/top_level.txt,sha256=ABQEKRH9iYb4sWnFdx7gIx7Hg899YktRkQpbRlSSqwU,25
|
10
|
-
kececinumbers-0.7.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|