1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
<?php
namespace Chippyash\Math\Matrix;
use Chippyash\Matrix\Transformation\Shift;
use Chippyash\Type\Number\IntType;
use Chippyash\Type\String\StringType;
use Chippyash\Type\TypeFactory;
use Chippyash\Math\Matrix\Special\Identity;
class ShiftMatrix extends NumericMatrix
{
const SM_TYPE_UPPER = 'upper';
const SM_TYPE_LOWER = 'lower';
public function __construct(IntType $size, StringType $shiftType, IntType $identityType = null)
{
$mA = (new Identity())->create([$size()]);
$new = TypeFactory::createInt(0);
$fS = new Shift();
if ($shiftType() == self::SM_TYPE_UPPER) {
$mB = $fS($mA, [1, $new]);
}
if ($shiftType() == self::SM_TYPE_LOWER) {
$mB = $fS($mA, [-1, $new]);
}
parent::__construct($mB);
}
}