
print("|sigma|^0.5 = ", sqrt_sigma_det_torch)
|sigma|^0.5 = tensor(4.2371, dtype=torch.float64) 
print("|L| = ", sqrt_L_det_torch)
|L| = tensor(4.2371, dtype=torch.float64)
```

We can measure the difference in run time using PyTorch’s built-in benchmark utility:
```python
import torch.utils.benchmark as benchmark
t0 = benchmark.Timer(
    stmt='torch.sqrt(torch.linalg.det(sigma))',
    globals={'sigma': sigma_torch})
t1 = benchmark.Timer(
    stmt='torch.prod(torch.diag(torch.linalg.cholesky(sigma)))',
    globals={'sigma': sigma_torch})

print(t0.timeit(100))
torch.sqrt(torch.linalg.det(sigma))
  80.80 us
  1 measurement, 100 runs , 1 thread
print(t1.timeit(100))
torch.prod(torch.diag(torch.linalg.cholesky(sigma)))
  11.56 us
  1 measurement, 100 runs , 1 thread
  ```
