buttercookie 0.2.0__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.
@@ -0,0 +1,2 @@
1
+ from .differential import diff
2
+ from .matrix import rowswap, rowscale, rowreplacement, rref
Binary file
buttercookie/_core.pyi ADDED
@@ -0,0 +1 @@
1
+ def hello_from_bin() -> str: ...
@@ -0,0 +1,3 @@
1
+ from .discrete import diff
2
+
3
+ __all__ = ["diff"]
@@ -0,0 +1,14 @@
1
+ def diff(t, x):
2
+ if len(t) != len(x):
3
+ raise ValueError("Time and signal arrays must have the same length")
4
+
5
+ n = len(t)
6
+ nu = [0.0] * n
7
+
8
+ for k in range(1, n):
9
+ dt = t[k] - t[k-1]
10
+ if dt == 0:
11
+ raise ValueError(f"Time step cannot be zero at index {k}")
12
+ nu[k] = (x[k] - x[k-1]) / dt
13
+
14
+ return nu
@@ -0,0 +1 @@
1
+ from .elementary import rowswap, rowscale, rowreplacement, rref
@@ -0,0 +1,72 @@
1
+ import torch
2
+
3
+ def rowswap(M, i, j):
4
+ M = M.clone()
5
+ tmp = M[i].clone()
6
+ M[i] = M[j]
7
+ M[j] = tmp
8
+ return M
9
+
10
+ def rowscale(M, i, factor):
11
+ M = M.clone()
12
+ M[i] = M[i] * factor
13
+ return M
14
+
15
+ def rowreplacement(M, i, j, factor_i, factor_j):
16
+ M = M.clone()
17
+ M[j] = factor_i * M[i] + factor_j * M[j]
18
+ return M
19
+
20
+ def rref(M):
21
+ M = M.clone().float()
22
+ rows, cols = M.shape
23
+ pivot_row = 0
24
+
25
+ for col in range(cols):
26
+ pivot = None
27
+ for r in range(pivot_row, rows):
28
+ if abs(M[r, col]) > 1e-10:
29
+ pivot = r
30
+ break
31
+
32
+ if pivot is None:
33
+ continue
34
+
35
+ if pivot != pivot_row:
36
+ M = rowswap(M, pivot, pivot_row)
37
+
38
+ piv_val = M[pivot_row, col]
39
+ M = rowscale(M, pivot_row, 1.0 / piv_val)
40
+
41
+ for r in range(rows):
42
+ if r != pivot_row and abs(M[r, col]) > 1e-10:
43
+ factor = -M[r, col]
44
+ M = rowreplacement(M, pivot_row, r, factor, 1.0)
45
+
46
+ pivot_row += 1
47
+ if pivot_row >= rows:
48
+ break
49
+
50
+ return M
51
+
52
+ if __name__ == "__main__":
53
+ test = torch.tensor([
54
+ [1.0, 3.0, 0.0, 0.0, 3.0],
55
+ [0.0, 0.0, 1.0, 0.0, 9.0],
56
+ [0.0, 0.0, 0.0, 1.0, -4.0]
57
+ ])
58
+
59
+ print("Original:")
60
+ print(test)
61
+
62
+ step1 = rowswap(test, 0, 1)
63
+ print("\nAfter R1<->R2:")
64
+ print(step1)
65
+
66
+ step2 = rowscale(step1, 0, 1.0/3.0)
67
+ print("\nAfter (1/3)R1:")
68
+ print(step2)
69
+
70
+ step3 = rowreplacement(step2, 0, 2, -3.0, 1.0)
71
+ print("\nAfter R3 = -3*R1 + R3:")
72
+ print(step3)
buttercookie/py.typed ADDED
File without changes
@@ -0,0 +1,12 @@
1
+ Metadata-Version: 2.5
2
+ Name: buttercookie
3
+ Version: 0.2.0
4
+ Summary: Add your description here
5
+ Author-email: buttercookiegh <israt.bushra.eee@gmail.com>
6
+ Requires-Python: >=3.12
7
+ Requires-Dist: torch>=2.14.0
8
+ Description-Content-Type: text/markdown
9
+
10
+ # buttercookie
11
+
12
+ A Python package with a discrete derivative function.
@@ -0,0 +1,11 @@
1
+ buttercookie/__init__.py,sha256=BCiEAJH4Bu47TQJgj7_d7QsnE_DRbyIAolInC5paKF8,91
2
+ buttercookie/_core.abi3.so,sha256=uD8dSv_zuOsUVvqrNCUZ3iAJwO4H5iW7rYPEELboLPk,468560
3
+ buttercookie/_core.pyi,sha256=b6oJaUXUzEzqUE5rpqefV06hl8o_JCU8pgKgIIzQgmc,33
4
+ buttercookie/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ buttercookie/differential/__init__.py,sha256=iy7X2Y-9aEBMue_F3fN74doiejMWUsxPejyrlT0YnMg,47
6
+ buttercookie/differential/discrete.py,sha256=GcyreqfSlO0dmtZ6_k-BlgMxkw75PUmZkdywukkwxP4,362
7
+ buttercookie/matrix/__init__.py,sha256=OgdnHBnW6E1c41X2nkjyFkksbiSzWRZxzKB9igtn6lk,64
8
+ buttercookie/matrix/elementary.py,sha256=05_UFWgJ0DQPDN3MLfvf7mxtSULb4IiWgRjjlRXd0w0,1626
9
+ buttercookie-0.2.0.dist-info/METADATA,sha256=CpcW_MNTe8haQiuhyfyVO4jcGzAtKRP1VLIvG5M_tp4,313
10
+ buttercookie-0.2.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
11
+ buttercookie-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any