public function add(self $vector) : self { if ($this->dimension() !== $vector->dimension()) { throw new VectorsMustMeOfTheSameDimensionException(); } $vector->rewind(); $numbers = $this->numbers->reduce([], function (array $numbers, float $number) use($vector) : array { $numbers[] = $number + $vector->current(); $vector->next(); return $numbers; }); return new self(...$numbers); }
public function testSum() { $vector = new Vector(1, 2, 3, -4); $this->assertSame(2.0, $vector->sum()); }