python求布尔矩阵中True的个数的平方值

import cupy as cp
p=0.2
sample = cp.random.choice(a=[True, False], size=(
        879, 879), p=[p, 1-p]) 
sample_num=cp.sum(sample) 
print(sample_num,sample_num**2)

创建了一个随机布尔矩阵,然后通过cp.sum计算矩阵中True的个数=sample_num
然后得到sample_num的平方值
诡异的是sample_num值正确,但平方值一直不对
类似输出:

96055 636628433

甚至可以得到负数:

154321 -1954832735

绝了,啥问题呀?