diff options
Diffstat (limited to 'vendor/markbaker/matrix/classes/src/Operators/Division.php')
-rw-r--r-- | vendor/markbaker/matrix/classes/src/Operators/Division.php | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/vendor/markbaker/matrix/classes/src/Operators/Division.php b/vendor/markbaker/matrix/classes/src/Operators/Division.php new file mode 100644 index 0000000..3cdedfb --- /dev/null +++ b/vendor/markbaker/matrix/classes/src/Operators/Division.php @@ -0,0 +1,35 @@ +<?php
+
+namespace Matrix\Operators;
+
+use Matrix\Div0Exception;
+use Matrix\Exception;
+use \Matrix\Matrix;
+use \Matrix\Functions;
+
+class Division extends Multiplication
+{
+ /**
+ * Execute the division
+ *
+ * @param mixed $value The matrix or numeric value to divide the current base value by
+ * @throws Exception If the provided argument is not appropriate for the operation
+ * @return $this The operation object, allowing multiple divisions to be chained
+ **/
+ public function execute($value, string $type = 'division'): Operator
+ {
+ if (is_array($value)) {
+ $value = new Matrix($value);
+ }
+
+ if (is_object($value) && ($value instanceof Matrix)) {
+ $value = Functions::inverse($value, $type);
+
+ return $this->multiplyMatrix($value, $type);
+ } elseif (is_numeric($value)) {
+ return $this->multiplyScalar(1 / $value, $type);
+ }
+
+ throw new Exception('Invalid argument for division');
+ }
+}
|