Reputation: 23
The last cell of the bellow array shows a wrong result:
Code:
import numpy
b=numpy.array ([[1,2,3,4],[5,6,8,16]])
b=b**b/b+1
b
result:
array([[2.000000e+00, 3.000000e+00, 1.000000e+01, 6.500000e+01],
[6.260000e+02, 7.777000e+03, 2.097153e+06, 1.000000e+00]])
All numbers are correct except for the last one.
Type is numpy.float64
. The correct answer is 1.152921504606847e+18
.
Any ideas?
Thanks
Upvotes: 2
Views: 641
Reputation: 5614
When you construct a numpy
array with whole numbers, its type will be int32
or int64
depending on your system, instead of the float64
you expected. So when you do 16**16
, the result overflowed and you end up with a 0.
To fix this, specify the float64
type for your numpy array, like this:
b=numpy.array ([[1,2,3,4],[5,6,8,16]], dtype='float64')
Or if you want, add a .0 to any of the numbers in your array to specify that you want to use float not int.
Upvotes: 7