use the cython version

This commit is contained in:
Valentin Boettcher 2022-02-04 11:50:11 +01:00
parent 281713334e
commit 13962754a2
2 changed files with 87 additions and 86 deletions

View file

@ -437,91 +437,92 @@ class CorrelationMatrix(Propagator):
α0d_e = self.params.W[u]
α0d = -self.params.G[u] * self.params.W[u]
result = np.zeros_like(t, dtype=np.complex128)
for l, m, n, r, g in iterate_ragged(
len(α_e), G.shape[2], G.shape[2], len(α0d_e), len(α0d_e)
):
result += (
G[2 * u, l, m]
* G[2 * u, l, n]
* α0d[r]
* (
(
α[l, g]
* (
-(
(
(G_e[m] + G_e[n])
* (G_e[n] + α_e[l, g])
* (G_e[m] + α0d_e[r])
)
/ np.exp(t * (α_e[l, g] + α0d_e[r]))
)
+ (
(G_e[m] + G_e[n])
* (G_e[n] + α_e[l, g])
* (α_e[l, g] + α0d_e[r])
)
/ np.exp(t * (G_e[m] + α0d_e[r]))
+ (
(G_e[m] + G_e[n])
* (G_e[m] + α0d_e[r])
* (α_e[l, g] + α0d_e[r])
)
/ np.exp(t * (G_e[n] + α_e[l, g]))
- (
(G_e[n] + α_e[l, g])
* (G_e[m] + α0d_e[r])
* (α_e[l, g] + α0d_e[r])
)
/ np.exp(t * (G_e[m] + G_e[n]))
+ (G_e[m] - α_e[l, g])
* (G_e[n] - α0d_e[r])
* (G_e[m] + G_e[n] + α_e[l, g] + α0d_e[r])
)
)
/ (
(G_e[m] + G_e[n])
* (G_e[m] - α_e[l, g])
* (G_e[n] + α_e[l, g])
* (G_e[n] - α0d_e[r])
* (G_e[m] + α0d_e[r])
* (α_e[l, g] + α0d_e[r])
)
+ αc[l, g]
* (
-(
1
/ (
np.exp(t * (G_e[m] + G_e[n]))
* (G_e[m] + G_e[n])
* (G_e[n] - α0d_e[r])
* (G_e[n] - αc_e[l, g])
)
)
+ 1
/ (
np.exp(t * (G_e[m] + α0d_e[r]))
* (G_e[n] - α0d_e[r])
* (G_e[m] + α0d_e[r])
* (α0d_e[r] - αc_e[l, g])
)
+ 1
/ (
(G_e[m] + G_e[n])
* (G_e[m] + α0d_e[r])
* (G_e[m] + αc_e[l, g])
)
+ 1
/ (
np.exp(t * (G_e[m] + αc_e[l, g]))
* (G_e[n] - αc_e[l, g])
* (G_e[m] + αc_e[l, g])
* (-α0d_e[r] + αc_e[l, g])
)
)
)
)
result = formulas.Q2(t, u, G, G_e, αc, αc_e, α, α_e, α0d, α0d_e)
# result = np.zeros_like(t, dtype=np.complex128)
# for l, m, n, r, g in iterate_ragged(
# len(α_e), G.shape[2], G.shape[2], len(α0d_e), len(α0d_e)
# ):
# result += (
# G[2 * u, l, m]
# * G[2 * u, l, n]
# * α0d[r]
# * (
# (
# α[l, g]
# * (
# -(
# (
# (G_e[m] + G_e[n])
# * (G_e[n] + α_e[l, g])
# * (G_e[m] + α0d_e[r])
# )
# / np.exp(t * (α_e[l, g] + α0d_e[r]))
# )
# + (
# (G_e[m] + G_e[n])
# * (G_e[n] + α_e[l, g])
# * (α_e[l, g] + α0d_e[r])
# )
# / np.exp(t * (G_e[m] + α0d_e[r]))
# + (
# (G_e[m] + G_e[n])
# * (G_e[m] + α0d_e[r])
# * (α_e[l, g] + α0d_e[r])
# )
# / np.exp(t * (G_e[n] + α_e[l, g]))
# - (
# (G_e[n] + α_e[l, g])
# * (G_e[m] + α0d_e[r])
# * (α_e[l, g] + α0d_e[r])
# )
# / np.exp(t * (G_e[m] + G_e[n]))
# + (G_e[m] - α_e[l, g])
# * (G_e[n] - α0d_e[r])
# * (G_e[m] + G_e[n] + α_e[l, g] + α0d_e[r])
# )
# )
# / (
# (G_e[m] + G_e[n])
# * (G_e[m] - α_e[l, g])
# * (G_e[n] + α_e[l, g])
# * (G_e[n] - α0d_e[r])
# * (G_e[m] + α0d_e[r])
# * (α_e[l, g] + α0d_e[r])
# )
# + αc[l, g]
# * (
# -(
# 1
# / (
# np.exp(t * (G_e[m] + G_e[n]))
# * (G_e[m] + G_e[n])
# * (G_e[n] - α0d_e[r])
# * (G_e[n] - αc_e[l, g])
# )
# )
# + 1
# / (
# np.exp(t * (G_e[m] + α0d_e[r]))
# * (G_e[n] - α0d_e[r])
# * (G_e[m] + α0d_e[r])
# * (α0d_e[r] - αc_e[l, g])
# )
# + 1
# / (
# (G_e[m] + G_e[n])
# * (G_e[m] + α0d_e[r])
# * (G_e[m] + αc_e[l, g])
# )
# + 1
# / (
# np.exp(t * (G_e[m] + αc_e[l, g]))
# * (G_e[n] - αc_e[l, g])
# * (G_e[m] + αc_e[l, g])
# * (-α0d_e[r] + αc_e[l, g])
# )
# )
# )
# )
return result

View file

@ -4,7 +4,7 @@ from itertools import product
def iterate_ragged(*ranges: int):
return product(*(range(r) for r in ranges))
cdef Q2(np.ndarray t,
def Q2(np.ndarray t,
int u,
np.ndarray G,
np.ndarray G_e,