private function pad(int $size) : self
{
$nextPower = pow(2, ceil(log($size, 2)));
$padded = $this->toArray();
for ($row = 0; $row < $size; $row++) {
for ($column = $size; $column < $nextPower; $column++) {
$padded[$row][$column] = $row === $column ? 1 : 0;
}
}
for ($row = $size; $row < $nextPower; $row++) {
$padded[] = [];
for ($column = 0; $column < $nextPower; $column++) {
$padded[$row][$column] = $row === $column ? 1 : 0;
}
}
return new static($padded);
}