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.
- buttercookie/__init__.py +2 -0
- buttercookie/_core.abi3.so +0 -0
- buttercookie/_core.pyi +1 -0
- buttercookie/differential/__init__.py +3 -0
- buttercookie/differential/discrete.py +14 -0
- buttercookie/matrix/__init__.py +1 -0
- buttercookie/matrix/elementary.py +72 -0
- buttercookie/py.typed +0 -0
- buttercookie-0.2.0.dist-info/METADATA +12 -0
- buttercookie-0.2.0.dist-info/RECORD +11 -0
- buttercookie-0.2.0.dist-info/WHEEL +4 -0
buttercookie/__init__.py
ADDED
|
Binary file
|
buttercookie/_core.pyi
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
def hello_from_bin() -> str: ...
|
|
@@ -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,,
|