lambda = $lambda; } /** * @param array $a * @param array $b * * @return float * * @throws InvalidArgumentException */ public function distance(array $a, array $b): float { if (count($a) !== count($b)) { throw InvalidArgumentException::arraySizeNotMatch(); } $distance = 0; $count = count($a); for ($i = 0; $i < $count; ++$i) { $distance += pow(abs($a[$i] - $b[$i]), $this->lambda); } return (float)pow($distance, 1 / $this->lambda); } }