kececinumbers 0.7.0__tar.gz → 0.7.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kececinumbers
3
- Version: 0.7.0
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 11 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.
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.6.9: 16 Numbers
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]
@@ -74,7 +74,7 @@ This library provides a unified algorithm that operates on 16 different number t
74
74
  <details>
75
75
  <summary>🇹🇷 Türkçe Açıklama (Click to expand)</summary>
76
76
 
77
- **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 11 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.
77
+ **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.
78
78
 
79
79
  </details>
80
80
 
@@ -98,7 +98,7 @@ This flexible mechanism provides a rich framework for studying the behavior of n
98
98
  * **Advanced Visualization:** Provides a multi-dimensional `plot_numbers` function tailored to the nature of each number system.
99
99
  * **Keçeci Prime Number (KPN) Analysis:** Identifies the most recurring prime representation in sequences to analyze their convergence behavior.
100
100
  * **Interactive and Programmatic Usage:** Supports both interactive parameter input (`get_interactive`) and direct use in scripts (`get_with_params`).
101
- * 0.6.9: 16 Numbers
101
+ * 0.7.1: 16 Numbers
102
102
  * 0.6.7: 11 Numbers
103
103
 
104
104
  ---
@@ -300,7 +300,8 @@ if seq_interactive:
300
300
  type_names = [
301
301
  "Positive Real", "Negative Real", "Complex", "Float", "Rational",
302
302
  "Quaternion", "Neutrosophic", "Neutro-Complex", "Hyperreal",
303
- "Bicomplex", "Neutro-Bicomplex"
303
+ "Bicomplex", "Neutro-Bicomplex", "Octonion", "Sedenion", "Clifford",
304
+ "Dual", "Split-Complex"
304
305
  ]
305
306
  # type_name'i params sözlüğüne ekleyerek raporu zenginleştirelim
306
307
  params['type_name'] = type_names[type_choice - 1]
@@ -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.0"
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
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # _version.py
3
3
 
4
- __version__ = "0.7.0"
4
+ __version__ = "0.7.1"
5
5
  __license__ = "MIT"
6
6
  __description__ = "Keçeci Numbers: An Exploration of a Dynamic Sequence Across Diverse Number Sets."
7
7
  __author__ = "Mehmet Keçeci"
@@ -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
- """Vector space dimension'ını otomatik hesaplar."""
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 veya sayıyı CliffordNumber'a dönüştürür (ör: '1.0+2.0e1')."""
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
- ax1.plot(scalar, 'o-', label='Scalar', color='black')
3213
- for k in vector_keys[:3]:
3214
- ax1.plot(values[k], label=f'Vec {k}', alpha=0.7)
3215
- ax1.set_title("Scalar & Vectors")
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
- ax2 = fig.add_subplot(gs[0, 1])
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
- try:
3224
- from sklearn.decomposition import PCA
3225
- matrix = np.array([list(v.values()) for v in values.values()]).T
3226
- pca = PCA(n_components=2)
3227
- if len(sequence) > 1:
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
- ax3 = fig.add_subplot(gs[1, :])
3230
- sc = ax3.scatter(proj[:, 0], proj[:, 1], c=range(len(proj)), cmap='plasma')
3231
- ax3.set_title("Clifford PCA")
3232
- plt.colorbar(sc, ax=ax3, label="Component")
3233
- except:
3234
- ax3 = fig.add_subplot(gs[1, :])
3235
- ax3.text(0.5, 0.5, "Install sklearn for PCA", ha='center')
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.0
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 11 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.
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.6.9: 16 Numbers
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]
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "kececinumbers"
9
- version = "0.7.0"
9
+ version = "0.7.1"
10
10
 
11
11
  # Diğer proje bilgileri (isteğe bağlı ama tavsiye edilir)
12
12
  authors = [
File without changes
File without changes
File without changes
File without changes