yms-kan 0.0.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.
yms_kan/feynman.py ADDED
@@ -0,0 +1,739 @@
1
+ from sympy import *
2
+ import torch
3
+
4
+
5
+ def get_feynman_dataset(name):
6
+
7
+ global symbols
8
+
9
+ tpi = torch.tensor(torch.pi)
10
+
11
+ if name == 'test':
12
+ symbol = x, y = symbols('x, y')
13
+ expr = (x+y) * sin(exp(2*y))
14
+ f = lambda x: (x[:,[0]] + x[:,[1]])*torch.sin(torch.exp(2*x[:,[1]]))
15
+ ranges = [-1,1]
16
+
17
+ if name == 'I.6.20a' or name == 1:
18
+ symbol = theta = symbols('theta')
19
+ symbol = [symbol]
20
+ expr = exp(-theta**2/2)/sqrt(2*pi)
21
+ f = lambda x: torch.exp(-x[:,[0]]**2/2)/torch.sqrt(2*tpi)
22
+ ranges = [[-3,3]]
23
+
24
+ if name == 'I.6.20' or name == 2:
25
+ symbol = theta, sigma = symbols('theta sigma')
26
+ expr = exp(-theta**2/(2*sigma**2))/sqrt(2*pi*sigma**2)
27
+ f = lambda x: torch.exp(-x[:,[0]]**2/(2*x[:,[1]]**2))/torch.sqrt(2*tpi*x[:,[1]]**2)
28
+ ranges = [[-1,1],[0.5,2]]
29
+
30
+ if name == 'I.6.20b' or name == 3:
31
+ symbol = theta, theta1, sigma = symbols('theta theta1 sigma')
32
+ expr = exp(-(theta-theta1)**2/(2*sigma**2))/sqrt(2*pi*sigma**2)
33
+ f = lambda x: torch.exp(-(x[:,[0]]-x[:,[1]])**2/(2*x[:,[2]]**2))/torch.sqrt(2*tpi*x[:,[2]]**2)
34
+ ranges = [[-1.5,1.5],[-1.5,1.5],[0.5,2]]
35
+
36
+ if name == 'I.8.4' or name == 4:
37
+ symbol = x1, x2, y1, y2 = symbols('x1 x2 y1 y2')
38
+ expr = sqrt((x2-x1)**2+(y2-y1)**2)
39
+ f = lambda x: torch.sqrt((x[:,[1]]-x[:,[0]])**2+(x[:,[3]]-x[:,[2]])**2)
40
+ ranges = [[-1,1],[-1,1],[-1,1],[-1,1]]
41
+
42
+ if name == 'I.9.18' or name == 5:
43
+ symbol = G, m1, m2, x1, x2, y1, y2, z1, z2 = symbols('G m1 m2 x1 x2 y1 y2 z1 z2')
44
+ expr = G*m1*m2/((x2-x1)**2+(y2-y1)**2+(z2-z1)**2)
45
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/((x[:,[3]]-x[:,[4]])**2+(x[:,[5]]-x[:,[6]])**2+(x[:,[7]]-x[:,[8]])**2)
46
+ ranges = [[-1,1],[-1,1],[-1,1],[-1,-0.5],[0.5,1],[-1,-0.5],[0.5,1],[-1,-0.5],[0.5,1]]
47
+
48
+ if name == 'I.10.7' or name == 6:
49
+ symbol = m0, v, c = symbols('m0 v c')
50
+ expr = m0/sqrt(1-v**2/c**2)
51
+ f = lambda x: x[:,[0]]/torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)
52
+ ranges = [[0,1],[0,1],[1,2]]
53
+
54
+ if name == 'I.11.19' or name == 7:
55
+ symbol = x1, y1, x2, y2, x3, y3 = symbols('x1 y1 x2 y2 x3 y3')
56
+ expr = x1*y1 + x2*y2 + x3*y3
57
+ f = lambda x: x[:,[0]]*x[:,[1]] + x[:,[2]]*x[:,[3]] + x[:,[4]]*x[:,[5]]
58
+ ranges = [-1,1]
59
+
60
+ if name == 'I.12.1' or name == 8:
61
+ symbol = mu, Nn = symbols('mu N_n')
62
+ expr = mu * Nn
63
+ f = lambda x: x[:,[0]]*x[:,[1]]
64
+ ranges = [-1,1]
65
+
66
+ if name == 'I.12.2' or name == 9:
67
+ symbol = q1, q2, eps, r = symbols('q1 q2 epsilon r')
68
+ expr = q1*q2/(4*pi*eps*r**2)
69
+ f = lambda x: x[:,[0]]*x[:,[1]]/(4*tpi*x[:,[2]]*x[:,[3]]**2)
70
+ ranges = [[-1,1],[-1,1],[0.5,2],[0.5,2]]
71
+
72
+ if name == 'I.12.4' or name == 10:
73
+ symbol = q1, eps, r = symbols('q1 epsilon r')
74
+ expr = q1/(4*pi*eps*r**2)
75
+ f = lambda x: x[:,[0]]/(4*tpi*x[:,[1]]*x[:,[2]]**2)
76
+ ranges = [[-1,1],[0.5,2],[0.5,2]]
77
+
78
+ if name == 'I.12.5' or name == 11:
79
+ symbol = q2, Ef = symbols('q2, E_f')
80
+ expr = q2*Ef
81
+ f = lambda x: x[:,[0]]*x[:,[1]]
82
+ ranges = [-1,1]
83
+
84
+ if name == 'I.12.11' or name == 12:
85
+ symbol = q, Ef, B, v, theta = symbols('q E_f B v theta')
86
+ expr = q*(Ef + B*v*sin(theta))
87
+ f = lambda x: x[:,[0]]*(x[:,[1]]+x[:,[2]]*x[:,[3]]*torch.sin(x[:,[4]]))
88
+ ranges = [[-1,1],[-1,1],[-1,1],[-1,1],[0,2*tpi]]
89
+
90
+ if name == 'I.13.4' or name == 13:
91
+ symbol = m, v, u, w = symbols('m u v w')
92
+ expr = 1/2*m*(v**2+u**2+w**2)
93
+ f = lambda x: 1/2*x[:,[0]]*(x[:,[1]]**2+x[:,[2]]**2+x[:,[3]]**2)
94
+ ranges = [[-1,1],[-1,1],[-1,1],[-1,1]]
95
+
96
+ if name == 'I.13.12' or name == 14:
97
+ symbol = G, m1, m2, r1, r2 = symbols('G m1 m2 r1 r2')
98
+ expr = G*m1*m2*(1/r2-1/r1)
99
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]*(1/x[:,[4]]-1/x[:,[3]])
100
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2]]
101
+
102
+ if name == 'I.14.3' or name == 15:
103
+ symbol = m, g, z = symbols('m g z')
104
+ expr = m*g*z
105
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]
106
+ ranges = [[0,1],[0,1],[-1,1]]
107
+
108
+ if name == 'I.14.4' or name == 16:
109
+ symbol = ks, x = symbols('k_s x')
110
+ expr = 1/2*ks*x**2
111
+ f = lambda x: 1/2*x[:,[0]]*x[:,[1]]**2
112
+ ranges = [[0,1],[-1,1]]
113
+
114
+ if name == 'I.15.3x' or name == 17:
115
+ symbol = x, u, t, c = symbols('x u t c')
116
+ expr = (x-u*t)/sqrt(1-u**2/c**2)
117
+ f = lambda x: (x[:,[0]] - x[:,[1]]*x[:,[2]])/torch.sqrt(1-x[:,[1]]**2/x[:,[3]]**2)
118
+ ranges = [[-1,1],[-1,1],[-1,1],[1,2]]
119
+
120
+ if name == 'I.15.3t' or name == 18:
121
+ symbol = t, u, x, c = symbols('t u x c')
122
+ expr = (t-u*x/c**2)/sqrt(1-u**2/c**2)
123
+ f = lambda x: (x[:,[0]] - x[:,[1]]*x[:,[2]]/x[:,[3]]**2)/torch.sqrt(1-x[:,[1]]**2/x[:,[3]]**2)
124
+ ranges = [[-1,1],[-1,1],[-1,1],[1,2]]
125
+
126
+ if name == 'I.15.10' or name == 19:
127
+ symbol = m0, v, c = symbols('m0 v c')
128
+ expr = m0*v/sqrt(1-v**2/c**2)
129
+ f = lambda x: x[:,[0]]*x[:,[1]]/torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)
130
+ ranges = [[-1,1],[-0.9,0.9],[1.1,2]]
131
+
132
+ if name == 'I.16.6' or name == 20:
133
+ symbol = u, v, c = symbols('u v c')
134
+ expr = (u+v)/(1+u*v/c**2)
135
+ f = lambda x: x[:,[0]]*x[:,[1]]/(1+x[:,[0]]*x[:,[1]]/x[:,[2]]**2)
136
+ ranges = [[-0.8,0.8],[-0.8,0.8],[1,2]]
137
+
138
+ if name == 'I.18.4' or name == 21:
139
+ symbol = m1, r1, m2, r2 = symbols('m1 r1 m2 r2')
140
+ expr = (m1*r1+m2*r2)/(m1+m2)
141
+ f = lambda x: (x[:,[0]]*x[:,[1]]+x[:,[2]]*x[:,[3]])/(x[:,[0]]+x[:,[2]])
142
+ ranges = [[0.5,1],[-1,1],[0.5,1],[-1,1]]
143
+
144
+ if name == 'I.18.4' or name == 22:
145
+ symbol = r, F, theta = symbols('r F theta')
146
+ expr = r*F*sin(theta)
147
+ f = lambda x: x[:,[0]]*x[:,[1]]*torch.sin(x[:,[2]])
148
+ ranges = [[-1,1],[-1,1],[0,2*tpi]]
149
+
150
+ if name == 'I.18.16' or name == 23:
151
+ symbol = m, r, v, theta = symbols('m r v theta')
152
+ expr = m*r*v*sin(theta)
153
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]*torch.sin(x[:,[3]])
154
+ ranges = [[-1,1],[-1,1],[-1,1],[0,2*tpi]]
155
+
156
+ if name == 'I.24.6' or name == 24:
157
+ symbol = m, omega, omega0, x = symbols('m omega omega_0 x')
158
+ expr = 1/4*m*(omega**2+omega0**2)*x**2
159
+ f = lambda x: 1/4*x[:,[0]]*(x[:,[1]]**2+x[:,[2]]**2)*x[:,[3]]**2
160
+ ranges = [[0,1],[-1,1],[-1,1],[-1,1]]
161
+
162
+ if name == 'I.25.13' or name == 25:
163
+ symbol = q, C = symbols('q C')
164
+ expr = q/C
165
+ f = lambda x: x[:,[0]]/x[:,[1]]
166
+ ranges = [[-1,1],[0.5,2]]
167
+
168
+ if name == 'I.26.2' or name == 26:
169
+ symbol = n, theta2 = symbols('n theta2')
170
+ expr = asin(n*sin(theta2))
171
+ f = lambda x: torch.arcsin(x[:,[0]]*torch.sin(x[:,[1]]))
172
+ ranges = [[0,0.99],[0,2*tpi]]
173
+
174
+ if name == 'I.27.6' or name == 27:
175
+ symbol = d1, d2, n = symbols('d1 d2 n')
176
+ expr = 1/(1/d1+n/d2)
177
+ f = lambda x: 1/(1/x[:,[0]]+x[:,[2]]/x[:,[1]])
178
+ ranges = [[0.5,2],[1,2],[0.5,2]]
179
+
180
+ if name == 'I.29.4' or name == 28:
181
+ symbol = omega, c = symbols('omega c')
182
+ expr = omega/c
183
+ f = lambda x: x[:,[0]]/x[:,[1]]
184
+ ranges = [[0,1],[0.5,2]]
185
+
186
+ if name == 'I.29.16' or name == 29:
187
+ symbol = x1, x2, theta1, theta2 = symbols('x1 x2 theta1 theta2')
188
+ expr = sqrt(x1**2+x2**2-2*x1*x2*cos(theta1-theta2))
189
+ f = lambda x: torch.sqrt(x[:,[0]]**2+x[:,[1]]**2-2*x[:,[0]]*x[:,[1]]*torch.cos(x[:,[2]]-x[:,[3]]))
190
+ ranges = [[-1,1],[-1,1],[0,2*tpi],[0,2*tpi]]
191
+
192
+ if name == 'I.30.3' or name == 30:
193
+ symbol = I0, n, theta = symbols('I_0 n theta')
194
+ expr = I0 * sin(n*theta/2)**2 / sin(theta/2) ** 2
195
+ f = lambda x: x[:,[0]] * torch.sin(x[:,[1]]*x[:,[2]]/2)**2 / torch.sin(x[:,[2]]/2)**2
196
+ ranges = [[0,1],[0,4],[0.4*tpi,1.6*tpi]]
197
+
198
+ if name == 'I.30.5' or name == 31:
199
+ symbol = lamb, n, d = symbols('lambda n d')
200
+ expr = asin(lamb/(n*d))
201
+ f = lambda x: torch.arcsin(x[:,[0]]/(x[:,[1]]*x[:,[2]]))
202
+ ranges = [[-1,1],[1,1.5],[1,1.5]]
203
+
204
+ if name == 'I.32.5' or name == 32:
205
+ symbol = q, a, eps, c = symbols('q a epsilon c')
206
+ expr = q**2*a**2/(eps*c**3)
207
+ f = lambda x: x[:,[0]]**2*x[:,[1]]**2/(x[:,[2]]*x[:,[3]]**3)
208
+ ranges = [[-1,1],[-1,1],[0.5,2],[0.5,2]]
209
+
210
+ if name == 'I.32.17' or name == 33:
211
+ symbol = eps, c, Ef, r, omega, omega0 = symbols('epsilon c E_f r omega omega_0')
212
+ expr = nsimplify((1/2*eps*c*Ef**2)*(8*pi*r**2/3)*(omega**4/(omega**2-omega0**2)**2))
213
+ f = lambda x: (1/2*x[:,[0]]*x[:,[1]]*x[:,[2]]**2)*(8*tpi*x[:,[3]]**2/3)*(x[:,[4]]**4/(x[:,[4]]**2-x[:,[5]]**2)**2)
214
+ ranges = [[0,1],[0,1],[-1,1],[0,1],[0,1],[1,2]]
215
+
216
+ if name == 'I.34.8' or name == 34:
217
+ symbol = q, V, B, p = symbols('q V B p')
218
+ expr = q*V*B/p
219
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/x[:,[3]]
220
+ ranges = [[-1,1],[-1,1],[-1,1],[0.5,2]]
221
+
222
+ if name == 'I.34.10' or name == 35:
223
+ symbol = omega0, v, c = symbols('omega_0 v c')
224
+ expr = omega0/(1-v/c)
225
+ f = lambda x: x[:,[0]]/(1-x[:,[1]]/x[:,[2]])
226
+ ranges = [[0,1],[0,0.9],[1.1,2]]
227
+
228
+ if name == 'I.34.14' or name == 36:
229
+ symbol = omega0, v, c = symbols('omega_0 v c')
230
+ expr = omega0 * (1+v/c)/sqrt(1-v**2/c**2)
231
+ f = lambda x: x[:,[0]]*(1+x[:,[1]]/x[:,[2]])/torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)
232
+ ranges = [[0,1],[-0.9,0.9],[1.1,2]]
233
+
234
+ if name == 'I.34.27' or name == 37:
235
+ symbol = hbar, omega = symbols('hbar omega')
236
+ expr = hbar * omega
237
+ f = lambda x: x[:,[0]]*x[:,[1]]
238
+ ranges = [[-1,1],[-1,1]]
239
+
240
+ if name == 'I.37.4' or name == 38:
241
+ symbol = I1, I2, delta = symbols('I_1 I_2 delta')
242
+ expr = I1 + I2 + 2*sqrt(I1*I2)*cos(delta)
243
+ f = lambda x: x[:,[0]] + x[:,[1]] + 2*torch.sqrt(x[:,[0]]*x[:,[1]])*torch.cos(x[:,[2]])
244
+ ranges = [[0.1,1],[0.1,1],[0,2*tpi]]
245
+
246
+ if name == 'I.38.12' or name == 39:
247
+ symbol = eps, hbar, m, q = symbols('epsilon hbar m q')
248
+ expr = 4*pi*eps*hbar**2/(m*q**2)
249
+ f = lambda x: 4*tpi*x[:,[0]]*x[:,[1]]**2/(x[:,[2]]*x[:,[3]]**2)
250
+ ranges = [[0,1],[0,1],[0.5,2],[0.5,2]]
251
+
252
+ if name == 'I.39.10' or name == 40:
253
+ symbol = pF, V = symbols('p_F V')
254
+ expr = 3/2 * pF * V
255
+ f = lambda x: 3/2 * x[:,[0]] * x[:,[1]]
256
+ ranges = [[0,1],[0,1]]
257
+
258
+ if name == 'I.39.11' or name == 41:
259
+ symbol = gamma, pF, V = symbols('gamma p_F V')
260
+ expr = pF * V/(gamma - 1)
261
+ f = lambda x: 1/(x[:,[0]]-1) * x[:,[1]] * x[:,[2]]
262
+ ranges = [[1.5,3],[0,1],[0,1]]
263
+
264
+ if name == 'I.39.22' or name == 42:
265
+ symbol = n, kb, T, V = symbols('n k_b T V')
266
+ expr = n*kb*T/V
267
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/x[:,[3]]
268
+ ranges = [[0,1],[0,1],[0,1],[0.5,2]]
269
+
270
+ if name == 'I.40.1' or name == 43:
271
+ symbol = n0, m, g, x, kb, T = symbols('n_0 m g x k_b T')
272
+ expr = n0 * exp(-m*g*x/(kb*T))
273
+ f = lambda x: x[:,[0]] * torch.exp(-x[:,[1]]*x[:,[2]]*x[:,[3]]/(x[:,[4]]*x[:,[5]]))
274
+ ranges = [[0,1],[-1,1],[-1,1],[-1,1],[1,2],[1,2]]
275
+
276
+ if name == 'I.41.16' or name == 44:
277
+ symbol = hbar, omega, c, kb, T = symbols('hbar omega c k_b T')
278
+ expr = hbar * omega**3/(pi**2*c**2*(exp(hbar*omega/(kb*T))-1))
279
+ f = lambda x: x[:,[0]]*x[:,[1]]**3/(tpi**2*x[:,[2]]**2*(torch.exp(x[:,[0]]*x[:,[1]]/(x[:,[3]]*x[:,[4]]))-1))
280
+ ranges = [[0.5,1],[0.5,1],[0.5,2],[0.5,2],[0.5,2]]
281
+
282
+ if name == 'I.43.16' or name == 45:
283
+ symbol = mu, q, Ve, d = symbols('mu q V_e d')
284
+ expr = mu*q*Ve/d
285
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/x[:,[3]]
286
+ ranges = [[0,1],[0,1],[0,1],[0.5,2]]
287
+
288
+ if name == 'I.43.31' or name == 46:
289
+ symbol = mu, kb, T = symbols('mu k_b T')
290
+ expr = mu*kb*T
291
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]
292
+ ranges = [[0,1],[0,1],[0,1]]
293
+
294
+ if name == 'I.43.43' or name == 47:
295
+ symbol = gamma, kb, v, A = symbols('gamma k_b v A')
296
+ expr = kb*v/A/(gamma-1)
297
+ f = lambda x: 1/(x[:,[0]]-1)*x[:,[1]]*x[:,[2]]/x[:,[3]]
298
+ ranges = [[1.5,3],[0,1],[0,1],[0.5,2]]
299
+
300
+ if name == 'I.44.4' or name == 48:
301
+ symbol = n, kb, T, V1, V2 = symbols('n k_b T V_1 V_2')
302
+ expr = n*kb*T*log(V2/V1)
303
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]*torch.log(x[:,[4]]/x[:,[3]])
304
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2]]
305
+
306
+ if name == 'I.47.23' or name == 49:
307
+ symbol = gamma, p, rho = symbols('gamma p rho')
308
+ expr = sqrt(gamma*p/rho)
309
+ f = lambda x: torch.sqrt(x[:,[0]]*x[:,[1]]/x[:,[2]])
310
+ ranges = [[0.1,1],[0.1,1],[0.5,2]]
311
+
312
+ if name == 'I.48.20' or name == 50:
313
+ symbol = m, v, c = symbols('m v c')
314
+ expr = m*c**2/sqrt(1-v**2/c**2)
315
+ f = lambda x: x[:,[0]]*x[:,[2]]**2/torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)
316
+ ranges = [[0,1],[-0.9,0.9],[1.1,2]]
317
+
318
+ if name == 'I.50.26' or name == 51:
319
+ symbol = x1, alpha, omega, t = symbols('x_1 alpha omega t')
320
+ expr = x1*(cos(omega*t)+alpha*cos(omega*t)**2)
321
+ f = lambda x: x[:,[0]]*(torch.cos(x[:,[2]]*x[:,[3]])+x[:,[1]]*torch.cos(x[:,[2]]*x[:,[3]])**2)
322
+ ranges = [[0,1],[0,1],[0,2*tpi],[0,1]]
323
+
324
+ if name == 'II.2.42' or name == 52:
325
+ symbol = kappa, T1, T2, A, d = symbols('kappa T_1 T_2 A d')
326
+ expr = kappa*(T2-T1)*A/d
327
+ f = lambda x: x[:,[0]]*(x[:,[2]]-x[:,[1]])*x[:,[3]]/x[:,[4]]
328
+ ranges = [[0,1],[0,1],[0,1],[0,1],[0.5,2]]
329
+
330
+ if name == 'II.3.24' or name == 53:
331
+ symbol = P, r = symbols('P r')
332
+ expr = P/(4*pi*r**2)
333
+ f = lambda x: x[:,[0]]/(4*tpi*x[:,[1]]**2)
334
+ ranges = [[0,1],[0.5,2]]
335
+
336
+ if name == 'II.4.23' or name == 54:
337
+ symbol = q, eps, r = symbols('q epsilon r')
338
+ expr = q/(4*pi*eps*r)
339
+ f = lambda x: x[:,[0]]/(4*tpi*x[:,[1]]*x[:,[2]])
340
+ ranges = [[0,1],[0.5,2],[0.5,2]]
341
+
342
+ if name == 'II.6.11' or name == 55:
343
+ symbol = eps, pd, theta, r = symbols('epsilon p_d theta r')
344
+ expr = 1/(4*pi*eps)*pd*cos(theta)/r**2
345
+ f = lambda x: 1/(4*tpi*x[:,[0]])*x[:,[1]]*torch.cos(x[:,[2]])/x[:,[3]]**2
346
+ ranges = [[0.5,2],[0,1],[0,2*tpi],[0.5,2]]
347
+
348
+ if name == 'II.6.15a' or name == 56:
349
+ symbol = eps, pd, z, x, y, r = symbols('epsilon p_d z x y r')
350
+ expr = 3/(4*pi*eps)*pd*z/r**5*sqrt(x**2+y**2)
351
+ f = lambda x: 3/(4*tpi*x[:,[0]])*x[:,[1]]*x[:,[2]]/x[:,[5]]**5*torch.sqrt(x[:,[3]]**2+x[:,[4]]**2)
352
+ ranges = [[0.5,2],[0,1],[0,1],[0,1],[0,1],[0.5,2]]
353
+
354
+ if name == 'II.6.15b' or name == 57:
355
+ symbol = eps, pd, r, theta = symbols('epsilon p_d r theta')
356
+ expr = 3/(4*pi*eps)*pd/r**3*cos(theta)*sin(theta)
357
+ f = lambda x: 3/(4*tpi*x[:,[0]])*x[:,[1]]/x[:,[2]]**3*torch.cos(x[:,[3]])*torch.sin(x[:,[3]])
358
+ ranges = [[0.5,2],[0,1],[0.5,2],[0,2*tpi]]
359
+
360
+ if name == 'II.8.7' or name == 58:
361
+ symbol = q, eps, d = symbols('q epsilon d')
362
+ expr = 3/5*q**2/(4*pi*eps*d)
363
+ f = lambda x: 3/5*x[:,[0]]**2/(4*tpi*x[:,[1]]*x[:,[2]])
364
+ ranges = [[0,1],[0.5,2],[0.5,2]]
365
+
366
+ if name == 'II.8.31' or name == 59:
367
+ symbol = eps, Ef = symbols('epsilon E_f')
368
+ expr = 1/2*eps*Ef**2
369
+ f = lambda x: 1/2*x[:,[0]]*x[:,[1]]**2
370
+ ranges = [[0,1],[0,1]]
371
+
372
+ if name == 'I.10.9' or name == 60:
373
+ symbol = sigma, eps, chi = symbols('sigma epsilon chi')
374
+ expr = sigma/eps/(1+chi)
375
+ f = lambda x: x[:,[0]]/x[:,[1]]/(1+x[:,[2]])
376
+ ranges = [[0,1],[0.5,2],[0,1]]
377
+
378
+ if name == 'II.11.3' or name == 61:
379
+ symbol = q, Ef, m, omega0, omega = symbols('q E_f m omega_o omega')
380
+ expr = q*Ef/(m*(omega0**2-omega**2))
381
+ f = lambda x: x[:,[0]]*x[:,[1]]/(x[:,[2]]*(x[:,[3]]**2-x[:,[4]]**2))
382
+ ranges = [[0,1],[0,1],[0.5,2],[1.5,3],[0,1]]
383
+
384
+ if name == 'II.11.17' or name == 62:
385
+ symbol = n0, pd, Ef, theta, kb, T = symbols('n_0 p_d E_f theta k_b T')
386
+ expr = n0*(1+pd*Ef*cos(theta)/(kb*T))
387
+ f = lambda x: x[:,[0]]*(1+x[:,[1]]*x[:,[2]]*torch.cos(x[:,[3]])/(x[:,[4]]*x[:,[5]]))
388
+ ranges = [[0,1],[-1,1],[-1,1],[0,2*tpi],[0.5,2],[0.5,2]]
389
+
390
+
391
+ if name == 'II.11.20' or name == 63:
392
+ symbol = n, pd, Ef, kb, T = symbols('n p_d E_f k_b T')
393
+ expr = n*pd**2*Ef/(3*kb*T)
394
+ f = lambda x: x[:,[0]]*x[:,[1]]**2*x[:,[2]]/(3*x[:,[3]]*x[:,[4]])
395
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2]]
396
+
397
+ if name == 'II.11.27' or name == 64:
398
+ symbol = n, alpha, eps, Ef = symbols('n alpha epsilon E_f')
399
+ expr = n*alpha/(1-n*alpha/3)*eps*Ef
400
+ f = lambda x: x[:,[0]]*x[:,[1]]/(1-x[:,[0]]*x[:,[1]]/3)*x[:,[2]]*x[:,[3]]
401
+ ranges = [[0,1],[0,2],[0,1],[0,1]]
402
+
403
+ if name == 'II.11.28' or name == 65:
404
+ symbol = n, alpha = symbols('n alpha')
405
+ expr = 1 + n*alpha/(1-n*alpha/3)
406
+ f = lambda x: 1 + x[:,[0]]*x[:,[1]]/(1-x[:,[0]]*x[:,[1]]/3)
407
+ ranges = [[0,1],[0,2]]
408
+
409
+ if name == 'II.13.17' or name == 66:
410
+ symbol = eps, c, l, r = symbols('epsilon c l r')
411
+ expr = 1/(4*pi*eps*c**2)*(2*l/r)
412
+ f = lambda x: 1/(4*tpi*x[:,[0]]*x[:,[1]]**2)*(2*x[:,[2]]/x[:,[3]])
413
+ ranges = [[0.5,2],[0.5,2],[0,1],[0.5,2]]
414
+
415
+ if name == 'II.13.23' or name == 67:
416
+ symbol = rho, v, c = symbols('rho v c')
417
+ expr = rho/sqrt(1-v**2/c**2)
418
+ f = lambda x: x[:,[0]]/torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)
419
+ ranges = [[0,1],[0,1],[1,2]]
420
+
421
+ if name == 'II.13.34' or name == 68:
422
+ symbol = rho, v, c = symbols('rho v c')
423
+ expr = rho*v/sqrt(1-v**2/c**2)
424
+ f = lambda x: x[:,[0]]*x[:,[1]]/torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)
425
+ ranges = [[0,1],[0,1],[1,2]]
426
+
427
+ if name == 'II.15.4' or name == 69:
428
+ symbol = muM, B, theta = symbols('mu_M B theta')
429
+ expr = - muM * B * cos(theta)
430
+ f = lambda x: - x[:,[0]]*x[:,[1]]*torch.cos(x[:,[2]])
431
+ ranges = [[0,1],[0,1],[0,2*tpi]]
432
+
433
+ if name == 'II.15.5' or name == 70:
434
+ symbol = pd, Ef, theta = symbols('p_d E_f theta')
435
+ expr = - pd * Ef * cos(theta)
436
+ f = lambda x: - x[:,[0]]*x[:,[1]]*torch.cos(x[:,[2]])
437
+ ranges = [[0,1],[0,1],[0,2*tpi]]
438
+
439
+ if name == 'II.21.32' or name == 71:
440
+ symbol = q, eps, r, v, c = symbols('q epsilon r v c')
441
+ expr = q/(4*pi*eps*r*(1-v/c))
442
+ f = lambda x: x[:,[0]]/(4*tpi*x[:,[1]]*x[:,[2]]*(1-x[:,[3]]/x[:,[4]]))
443
+ ranges = [[0,1],[0.5,2],[0.5,2],[0,1],[1,2]]
444
+
445
+ if name == 'II.24.17' or name == 72:
446
+ symbol = omega, c, d = symbols('omega c d')
447
+ expr = sqrt(omega**2/c**2-pi**2/d**2)
448
+ f = lambda x: torch.sqrt(x[:,[0]]**2/x[:,[1]]**2-tpi**2/x[:,[2]]**2)
449
+ ranges = [[1,1.5],[0.75,1],[1*tpi,1.5*tpi]]
450
+
451
+ if name == 'II.27.16' or name == 73:
452
+ symbol = eps, c, Ef = symbols('epsilon c E_f')
453
+ expr = eps * c * Ef**2
454
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]**2
455
+ ranges = [[0,1],[0,1],[-1,1]]
456
+
457
+ if name == 'II.27.18' or name == 74:
458
+ symbol = eps, Ef = symbols('epsilon E_f')
459
+ expr = eps * Ef**2
460
+ f = lambda x: x[:,[0]]*x[:,[1]]**2
461
+ ranges = [[0,1],[-1,1]]
462
+
463
+ if name == 'II.34.2a' or name == 75:
464
+ symbol = q, v, r = symbols('q v r')
465
+ expr = q*v/(2*pi*r)
466
+ f = lambda x: x[:,[0]]*x[:,[1]]/(2*tpi*x[:,[2]])
467
+ ranges = [[0,1],[0,1],[0.5,2]]
468
+
469
+ if name == 'II.34.2' or name == 76:
470
+ symbol = q, v, r = symbols('q v r')
471
+ expr = q*v*r/2
472
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/2
473
+ ranges = [[0,1],[0,1],[0,1]]
474
+
475
+ if name == 'II.34.11' or name == 77:
476
+ symbol = g, q, B, m = symbols('g q B m')
477
+ expr = g*q*B/(2*m)
478
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/(2*x[:,[3]])
479
+ ranges = [[0,1],[0,1],[0,1],[0.5,2]]
480
+
481
+ if name == 'II.34.29a' or name == 78:
482
+ symbol = q, h, m = symbols('q h m')
483
+ expr = q*h/(4*pi*m)
484
+ f = lambda x: x[:,[0]]*x[:,[1]]/(4*tpi*x[:,[2]])
485
+ ranges = [[0,1],[0,1],[0.5,2]]
486
+
487
+ if name == 'II.34.29b' or name == 79:
488
+ symbol = g, mu, B, J, hbar = symbols('g mu B J hbar')
489
+ expr = g*mu*B*J/hbar
490
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]*x[:,[3]]/x[:,[4]]
491
+ ranges = [[0,1],[0,1],[0,1],[0,1],[0.5,2]]
492
+
493
+ if name == 'II.35.18' or name == 80:
494
+ symbol = n0, mu, B, kb, T = symbols('n0 mu B k_b T')
495
+ expr = n0/(exp(mu*B/(kb*T))+exp(-mu*B/(kb*T)))
496
+ f = lambda x: x[:,[0]]/(torch.exp(x[:,[1]]*x[:,[2]]/(x[:,[3]]*x[:,[4]]))+torch.exp(-x[:,[1]]*x[:,[2]]/(x[:,[3]]*x[:,[4]])))
497
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2]]
498
+
499
+ if name == 'II.35.21' or name == 81:
500
+ symbol = n, mu, B, kb, T = symbols('n mu B k_b T')
501
+ expr = n*mu*tanh(mu*B/(kb*T))
502
+ f = lambda x: x[:,[0]]*x[:,[1]]*torch.tanh(x[:,[1]]*x[:,[2]]/(x[:,[3]]*x[:,[4]]))
503
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2]]
504
+
505
+ if name == 'II.36.38' or name == 82:
506
+ symbol = mu, B, kb, T, alpha, M, eps, c = symbols('mu B k_b T alpha M epsilon c')
507
+ expr = mu*B/(kb*T) + mu*alpha*M/(eps*c**2*kb*T)
508
+ f = lambda x: x[:,[0]]*x[:,[1]]/(x[:,[2]]*x[:,[3]]) + x[:,[0]]*x[:,[4]]*x[:,[5]]/(x[:,[6]]*x[:,[7]]**2*x[:,[2]]*x[:,[3]])
509
+ ranges = [[0,1],[0,1],[0.5,2],[0.5,2],[0,1],[0,1],[0.5,2],[0.5,2]]
510
+
511
+ if name == 'II.37.1' or name == 83:
512
+ symbol = mu, chi, B = symbols('mu chi B')
513
+ expr = mu*(1+chi)*B
514
+ f = lambda x: x[:,[0]]*(1+x[:,[1]])*x[:,[2]]
515
+ ranges = [[0,1],[0,1],[0,1]]
516
+
517
+ if name == 'II.38.3' or name == 84:
518
+ symbol = Y, A, x, d = symbols('Y A x d')
519
+ expr = Y*A*x/d
520
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/x[:,[3]]
521
+ ranges = [[0,1],[0,1],[0,1],[0.5,2]]
522
+
523
+ if name == 'II.38.14' or name == 85:
524
+ symbol = Y, sigma = symbols('Y sigma')
525
+ expr = Y/(2*(1+sigma))
526
+ f = lambda x: x[:,[0]]/(2*(1+x[:,[1]]))
527
+ ranges = [[0,1],[0,1]]
528
+
529
+ if name == 'III.4.32' or name == 86:
530
+ symbol = hbar, omega, kb, T = symbols('hbar omega k_b T')
531
+ expr = 1/(exp(hbar*omega/(kb*T))-1)
532
+ f = lambda x: 1/(torch.exp(x[:,[0]]*x[:,[1]]/(x[:,[2]]*x[:,[3]]))-1)
533
+ ranges = [[0.5,1],[0.5,1],[0.5,2],[0.5,2]]
534
+
535
+ if name == 'III.4.33' or name == 87:
536
+ symbol = hbar, omega, kb, T = symbols('hbar omega k_b T')
537
+ expr = hbar*omega/(exp(hbar*omega/(kb*T))-1)
538
+ f = lambda x: x[:,[0]]*x[:,[1]]/(torch.exp(x[:,[0]]*x[:,[1]]/(x[:,[2]]*x[:,[3]]))-1)
539
+ ranges = [[0,1],[0,1],[0.5,2],[0.5,2]]
540
+
541
+ if name == 'III.7.38' or name == 88:
542
+ symbol = mu, B, hbar = symbols('mu B hbar')
543
+ expr = 2*mu*B/hbar
544
+ f = lambda x: 2*x[:,[0]]*x[:,[1]]/x[:,[2]]
545
+ ranges = [[0,1],[0,1],[0.5,2]]
546
+
547
+ if name == 'III.8.54' or name == 89:
548
+ symbol = E, t, hbar = symbols('E t hbar')
549
+ expr = sin(E*t/hbar)**2
550
+ f = lambda x: torch.sin(x[:,[0]]*x[:,[1]]/x[:,[2]])**2
551
+ ranges = [[0,2*tpi],[0,1],[0.5,2]]
552
+
553
+ if name == 'III.9.52' or name == 90:
554
+ symbol = pd, Ef, t, hbar, omega, omega0 = symbols('p_d E_f t hbar omega omega_0')
555
+ expr = pd*Ef*t/hbar*sin((omega-omega0)*t/2)**2/((omega-omega0)*t/2)**2
556
+ f = lambda x: x[:,[0]]*x[:,[1]]*x[:,[2]]/x[:,[3]]*torch.sin((x[:,[4]]-x[:,[5]])*x[:,[2]]/2)**2/((x[:,[4]]-x[:,[5]])*x[:,[2]]/2)**2
557
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0,tpi],[0,tpi]]
558
+
559
+ if name == 'III.10.19' or name == 91:
560
+ symbol = mu, Bx, By, Bz = symbols('mu B_x B_y B_z')
561
+ expr = mu*sqrt(Bx**2+By**2+Bz**2)
562
+ f = lambda x: x[:,[0]]*torch.sqrt(x[:,[1]]**2+x[:,[2]]**2+x[:,[3]]**2)
563
+ ranges = [[0,1],[0,1],[0,1],[0,1]]
564
+
565
+ if name == 'III.12.43' or name == 92:
566
+ symbol = n, hbar = symbols('n hbar')
567
+ expr = n * hbar
568
+ f = lambda x: x[:,[0]]*x[:,[1]]
569
+ ranges = [[0,1],[0,1]]
570
+
571
+ if name == 'III.13.18' or name == 93:
572
+ symbol = E, d, k, hbar = symbols('E d k hbar')
573
+ expr = 2*E*d**2*k/hbar
574
+ f = lambda x: 2*x[:,[0]]*x[:,[1]]**2*x[:,[2]]/x[:,[3]]
575
+ ranges = [[0,1],[0,1],[0,1],[0.5,2]]
576
+
577
+ if name == 'III.14.14' or name == 94:
578
+ symbol = I0, q, Ve, kb, T = symbols('I_0 q V_e k_b T')
579
+ expr = I0 * (exp(q*Ve/(kb*T))-1)
580
+ f = lambda x: x[:,[0]]*(torch.exp(x[:,[1]]*x[:,[2]]/(x[:,[3]]*x[:,[4]]))-1)
581
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2]]
582
+
583
+ if name == 'III.15.12' or name == 95:
584
+ symbol = U, k, d = symbols('U k d')
585
+ expr = 2*U*(1-cos(k*d))
586
+ f = lambda x: 2*x[:,[0]]*(1-torch.cos(x[:,[1]]*x[:,[2]]))
587
+ ranges = [[0,1],[0,2*tpi],[0,1]]
588
+
589
+ if name == 'III.15.14' or name == 96:
590
+ symbol = hbar, E, d = symbols('hbar E d')
591
+ expr = hbar**2/(2*E*d**2)
592
+ f = lambda x: x[:,[0]]**2/(2*x[:,[1]]*x[:,[2]]**2)
593
+ ranges = [[0,1],[0.5,2],[0.5,2]]
594
+
595
+ if name == 'III.15.27' or name == 97:
596
+ symbol = alpha, n, d = symbols('alpha n d')
597
+ expr = 2*pi*alpha/(n*d)
598
+ f = lambda x: 2*tpi*x[:,[0]]/(x[:,[1]]*x[:,[2]])
599
+ ranges = [[0,1],[0.5,2],[0.5,2]]
600
+
601
+ if name == 'III.17.37' or name == 98:
602
+ symbol = beta, alpha, theta = symbols('beta alpha theta')
603
+ expr = beta * (1+alpha*cos(theta))
604
+ f = lambda x: x[:,[0]]*(1+x[:,[1]]*torch.cos(x[:,[2]]))
605
+ ranges = [[0,1],[0,1],[0,2*tpi]]
606
+
607
+ if name == 'III.19.51' or name == 99:
608
+ symbol = m, q, eps, hbar, n = symbols('m q epsilon hbar n')
609
+ expr = - m * q**4/(2*(4*pi*eps)**2*hbar**2)*1/n**2
610
+ f = lambda x: - x[:,[0]]*x[:,[1]]**4/(2*(4*tpi*x[:,[2]])**2*x[:,[3]]**2)*1/x[:,[4]]**2
611
+ ranges = [[0,1],[0,1],[0.5,2],[0.5,2],[0.5,2]]
612
+
613
+ if name == 'III.21.20' or name == 100:
614
+ symbol = rho, q, A, m = symbols('rho q A m')
615
+ expr = - rho*q*A/m
616
+ f = lambda x: - x[:,[0]]*x[:,[1]]*x[:,[2]]/x[:,[3]]
617
+ ranges = [[0,1],[0,1],[0,1],[0.5,2]]
618
+
619
+ if name == 'Rutherforld scattering' or name == 101:
620
+ symbol = Z1, Z2, alpha, hbar, c, E, theta = symbols('Z_1 Z_2 alpha hbar c E theta')
621
+ expr = (Z1*Z2*alpha*hbar*c/(4*E*sin(theta/2)**2))**2
622
+ f = lambda x: (x[:,[0]]*x[:,[1]]*x[:,[2]]*x[:,[3]]*x[:,[4]]/(4*x[:,[5]]*torch.sin(x[:,[6]]/2)**2))**2
623
+ ranges = [[0,1],[0,1],[0,1],[0,1],[0,1],[0.5,2],[0.1*tpi,0.9*tpi]]
624
+
625
+ if name == 'Friedman equation' or name == 102:
626
+ symbol = G, rho, kf, c, af = symbols('G rho k_f c a_f')
627
+ expr = sqrt(8*pi*G/3*rho-kf*c**2/af**2)
628
+ f = lambda x: torch.sqrt(8*tpi*x[:,[0]]/3*x[:,[1]] - x[:,[2]]*x[:,[3]]**2/x[:,[4]]**2)
629
+ ranges = [[1,2],[1,2],[0,1],[0,1],[1,2]]
630
+
631
+ if name == 'Compton scattering' or name == 103:
632
+ symbol = E, m, c, theta = symbols('E m c theta')
633
+ expr = E/(1+E/(m*c**2)*(1-cos(theta)))
634
+ f = lambda x: x[:,[0]]/(1+x[:,[0]]/(x[:,[1]]*x[:,[2]]**2)*(1-torch.cos(x[:,[3]])))
635
+ ranges = [[0,1],[0.5,2],[0.5,2],[0,2*tpi]]
636
+
637
+ if name == 'Radiated gravitational wave power' or name == 104:
638
+ symbol = G, c, m1, m2, r = symbols('G c m_1 m_2 r')
639
+ expr = -32/5*G**4/c**5*(m1*m2)**2*(m1+m2)/r**5
640
+ f = lambda x: -32/5*x[:,[0]]**4/x[:,[1]]**5*(x[:,[2]]*x[:,[3]])**2*(x[:,[2]]+x[:,[3]])/x[:,[4]]**5
641
+ ranges = [[0,1],[0.5,2],[0,1],[0,1],[0.5,2]]
642
+
643
+ if name == 'Relativistic aberration' or name == 105:
644
+ symbol = theta2, v, c = symbols('theta_2 v c')
645
+ expr = acos((cos(theta2)-v/c)/(1-v/c*cos(theta2)))
646
+ f = lambda x: torch.arccos((torch.cos(x[:,[0]])-x[:,[1]]/x[:,[2]])/(1-x[:,[1]]/x[:,[2]]*torch.cos(x[:,[0]])))
647
+ ranges = [[0,tpi],[0,1],[1,2]]
648
+
649
+ if name == 'N-slit diffraction' or name == 106:
650
+ symbol = I0, alpha, delta, N = symbols('I_0 alpha delta N')
651
+ expr = I0 * (sin(alpha/2)/(alpha/2)*sin(N*delta/2)/sin(delta/2))**2
652
+ f = lambda x: x[:,[0]] * (torch.sin(x[:,[1]]/2)/(x[:,[1]]/2)*torch.sin(x[:,[3]]*x[:,[2]]/2)/torch.sin(x[:,[2]]/2))**2
653
+ ranges = [[0,1],[0.1*tpi,0.9*tpi],[0.1*tpi,0.9*tpi],[0.5,1]]
654
+
655
+ if name == 'Goldstein 3.16' or name == 107:
656
+ symbol = m, E, U, L, r = symbols('m E U L r')
657
+ expr = sqrt(2/m*(E-U-L**2/(2*m*r**2)))
658
+ f = lambda x: torch.sqrt(2/x[:,[0]]*(x[:,[1]]-x[:,[2]]-x[:,[3]]**2/(2*x[:,[0]]*x[:,[4]]**2)))
659
+ ranges = [[1,2],[2,3],[0,1],[0,1],[1,2]]
660
+
661
+ if name == 'Goldstein 3.55' or name == 108:
662
+ symbol = m, kG, L, E, theta1, theta2 = symbols('m k_G L E theta_1 theta_2')
663
+ expr = m*kG/L**2*(1+sqrt(1+2*E*L**2/(m*kG**2))*cos(theta1-theta2))
664
+ f = lambda x: x[:,[0]]*x[:,[1]]/x[:,[2]]**2*(1+torch.sqrt(1+2*x[:,[3]]*x[:,[2]]**2/(x[:,[0]]*x[:,[1]]**2))*torch.cos(x[:,[4]]-x[:,[5]]))
665
+ ranges = [[0.5,2],[0.5,2],[0.5,2],[0,1],[0,2*tpi],[0,2*tpi]]
666
+
667
+ if name == 'Goldstein 3.64 (ellipse)' or name == 109:
668
+ symbol = d, alpha, theta1, theta2 = symbols('d alpha theta_1 theta_2')
669
+ expr = d*(1-alpha**2)/(1+alpha*cos(theta2-theta1))
670
+ f = lambda x: x[:,[0]]*(1-x[:,[1]]**2)/(1+x[:,[1]]*torch.cos(x[:,[2]]-x[:,[3]]))
671
+ ranges = [[0,1],[0,0.9],[0,2*tpi],[0,2*tpi]]
672
+
673
+ if name == 'Goldstein 3.74 (Kepler)' or name == 110:
674
+ symbol = d, G, m1, m2 = symbols('d G m_1 m_2')
675
+ expr = 2*pi*d**(3/2)/sqrt(G*(m1+m2))
676
+ f = lambda x: 2*tpi*x[:,[0]]**(3/2)/torch.sqrt(x[:,[1]]*(x[:,[2]]+x[:,[3]]))
677
+ ranges = [[0,1],[0.5,2],[0.5,2],[0.5,2]]
678
+
679
+ if name == 'Goldstein 3.99' or name == 111:
680
+ symbol = eps, E, L, m, Z1, Z2, q = symbols('epsilon E L m Z_1 Z_2 q')
681
+ expr = sqrt(1+2*eps**2*E*L**2/(m*(Z1*Z2*q**2)**2))
682
+ f = lambda x: torch.sqrt(1+2*x[:,[0]]**2*x[:,[1]]*x[:,[2]]**2/(x[:,[3]]*(x[:,[4]]*x[:,[5]]*x[:,[6]]**2)**2))
683
+ ranges = [[0,1],[0,1],[0,1],[0.5,2],[0.5,2],[0.5,2],[0.5,2]]
684
+
685
+ if name == 'Goldstein 8.56' or name == 112:
686
+ symbol = p, q, A, c, m, Ve = symbols('p q A c m V_e')
687
+ expr = sqrt((p-q*A)**2*c**2+m**2*c**4) + q*Ve
688
+ f = lambda x: torch.sqrt((x[:,[0]]-x[:,[1]]*x[:,[2]])**2*x[:,[3]]**2+x[:,[4]]**2*x[:,[3]]**4) + x[:,[1]]*x[:,[5]]
689
+ ranges = [0,1]
690
+
691
+ if name == 'Goldstein 12.80' or name == 113:
692
+ symbol = m, p, omega, x, alpha, y = symbols('m p omega x alpha y')
693
+ expr = 1/(2*m)*(p**2+m**2*omega**2*x**2*(1+alpha*y/x))
694
+ f = lambda x: 1/(2*x[:,[0]]) * (x[:,[1]]**2+x[:,[0]]**2*x[:,[2]]**2*x[:,[3]]**2*(1+x[:,[4]]*x[:,[3]]/x[:,[5]]))
695
+ ranges = [[0.5,2],[0,1],[0,1],[0,1],[0,1],[0.5,2]]
696
+
697
+ if name == 'Jackson 2.11' or name == 114:
698
+ symbol = q, eps, y, Ve, d = symbols('q epsilon y V_e d')
699
+ expr = q/(4*pi*eps*y**2)*(4*pi*eps*Ve*d-q*d*y**3/(y**2-d**2)**2)
700
+ f = lambda x: x[:,[0]]/(4*tpi*x[:,[1]]*x[:,x[:,[2]]]**2)*(4*tpi*x[:,[1]]*x[:,[3]]*x[:,[4]]-x[:,[0]]*x[:,[4]]*x[:,[2]]**3/(x[:,[2]]**2-x[:,[4]]**2)**2)
701
+ ranges = [[0,1],[0.5,2],[1,2],[0,1],[0,1]]
702
+
703
+ if name == 'Jackson 3.45' or name == 115:
704
+ symbol = q, r, d, alpha = symbols('q r d alpha')
705
+ expr = q/sqrt(r**2+d**2-2*d*r*cos(alpha))
706
+ f = lambda x: x[:,[0]]/torch.sqrt(x[:,[1]]**2+x[:,[2]]**2-2*x[:,[1]]*x[:,[2]]*torch.cos(x[:,[3]]))
707
+ ranges = [[0,1],[0,1],[0,1],[0,2*tpi]]
708
+
709
+ if name == 'Jackson 4.60' or name == 116:
710
+ symbol = Ef, theta, alpha, d, r = symbols('E_f theta alpha d r')
711
+ expr = Ef * cos(theta) * ((alpha-1)/(alpha+2) * d**3/r**2 - r)
712
+ f = lambda x: x[:,[0]] * torch.cos(x[:,[1]]) * ((x[:,[2]]-1)/(x[:,[2]]+2) * x[:,[3]]**3/x[:,[4]]**2 - x[:,[4]])
713
+ ranges = [[0,1],[0,2*tpi],[0,2],[0,1],[0.5,2]]
714
+
715
+ if name == 'Jackson 11.38 (Doppler)' or name == 117:
716
+ symbol = omega, v, c, theta = symbols('omega v c theta')
717
+ expr = sqrt(1-v**2/c**2)/(1+v/c*cos(theta))*omega
718
+ f = lambda x: torch.sqrt(1-x[:,[1]]**2/x[:,[2]]**2)/(1+x[:,[1]]/x[:,[2]]*torch.cos(x[:,[3]]))*x[:,[0]]
719
+ ranges = [[0,1],[0,1],[1,2],[0,2*tpi]]
720
+
721
+ if name == 'Weinberg 15.2.1' or name == 118:
722
+ symbol = G, c, kf, af, H = symbols('G c k_f a_f H')
723
+ expr = 3/(8*pi*G)*(c**2*kf/af**2+H**2)
724
+ f = lambda x: 3/(8*tpi*x[:,[0]])*(x[:,[1]]**2*x[:,[2]]/x[:,[3]]**2+x[:,[4]]**2)
725
+ ranges = [[0.5,2],[0,1],[0,1],[0.5,2],[0,1]]
726
+
727
+ if name == 'Weinberg 15.2.2' or name == 119:
728
+ symbol = G, c, kf, af, H, alpha = symbols('G c k_f a_f H alpha')
729
+ expr = -1/(8*pi*G)*(c**4*kf/af**2+c**2*H**2*(1-2*alpha))
730
+ f = lambda x: -1/(8*tpi*x[:,[0]])*(x[:,[1]]**4*x[:,[2]]/x[:,[3]]**2 + x[:,[1]]**2*x[:,[4]]**2*(1-2*x[:,[5]]))
731
+ ranges = [[0.5,2],[0,1],[0,1],[0.5,2],[0,1],[0,1]]
732
+
733
+ if name == 'Schwarz 13.132 (Klein-Nishina)' or name == 120:
734
+ symbol = alpha, hbar, m, c, omega0, omega, theta = symbols('alpha hbar m c omega_0 omega theta')
735
+ expr = pi*alpha**2*hbar**2/m**2/c**2*(omega0/omega)**2*(omega0/omega+omega/omega0-sin(theta)**2)
736
+ f = lambda x: tpi*x[:,[0]]**2*x[:,[1]]**2/x[:,[2]]**2/x[:,[3]]**2*(x[:,[4]]/x[:,[5]])**2*(x[:,[4]]/x[:,[5]]+x[:,[5]]/x[:,[4]]-torch.sin(x[:,[6]])**2)
737
+ ranges = [[0,1],[0,1],[0.5,2],[0.5,2],[0.5,2],[0.5,2],[0,2*tpi]]
738
+
739
+ return symbol, expr, f, ranges