## Question:

```
import numpy as np
A = np.array([[1, 1, 2, -1],
[2, -1, 0, -5],
[-1, -1, 0, -2],
[6, 3, 4, -3]])
print(np.linalg.det(A))
```

I think so. The determinant must be equal to zero, I checked on a piece of paper and in online calculators. But this code gives such an answer `5.329070518200744e-15`

. What am I doing wrong? Maybe he was inattentive somewhere, and if not, how is it better to calculate?

## Answer:

I suppose it may depend only on the versions of **Python** and especially **Numpy** . In **Google Colaboratory** , exactly **0.0** comes out, even if you print 64 decimal places. I tried to set a different data type (the default in this matrix is `numpy.int64`

), for example `numpy.int16`

or `numpy.float32`

– it doesn't matter, it still comes out **0.0** . But `numpy.float16`

cannot be set, `linalg`

swears at it that it does not work with it. But check out for fun what type of data you get in the matrix:

```
print(type(A[0,0]))
```

In **Google Colaboratory** , these versions are:

```
Python 3.6.9
Numpy 1.18.5
```

The code I tested everything with:

```
import numpy as np
A = np.array([[1, 1, 2, -1],
[2, -1, 0, -5],
[-1, -1, 0, -2],
[6, 3, 4, -3]] #, dtype=np.float32)
)
print(np.__version__)
print(type(A[0,0]))
print(np.linalg.det(A))
print(f"{np.linalg.det(A):.64f}")
```

Result:

```
1.18.5
<class 'numpy.int64'>
0.0
0.0000000000000000000000000000000000000000000000000000000000000000
```