cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
Torchquad.py
Go to the documentation of this file.
6
7import torch
8import numpy as np
9from torchquad import MonteCarlo, set_up_backend
10
11
12set_up_backend('torch', data_type='float32')
13
14
15def integrate(f, num_dim: int, num_iter: int, num_warmup: int, num_calls: int, limits: list[tuple[float]]=[]):
16 limits = limits if len(limits) > 0 else num_dim * [(0., 1.)]
17
18 def func(xarr):
19 return torch.from_numpy(np.array([f([float(x) for x in xvals]) for xvals in xarr.numpy()]))
20
21 mc = MonteCarlo()
22 res = mc.integrate(func, dim=num_dim, N=num_calls, integration_domain=limits, backend='torch')
23 return (float(res.numpy()), 1.)
24
25
26if __name__ == '__main__':
27 import math
28 print(integrate(lambda x: x[0]**2 + x[1]**2, 2, 10, 1000, 1000))
29 print(integrate(lambda x: math.sin(x[0]), 1, 10, 1000, 1000, [(0, math.pi)]))