From e8db3aa2bcefd858b22565bf0eab6e05219db20c Mon Sep 17 00:00:00 2001
From: Ferdinand Fischer <ferdinand.fischer@uni-ulm.de>
Date: Thu, 3 Sep 2020 13:24:57 +0200
Subject: [PATCH] Fixed muliplication of empty quantities

---
 +quantity/Discrete.m                | 5 +++--
 +unittests/+quantity/testDiscrete.m | 7 +++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/+quantity/Discrete.m b/+quantity/Discrete.m
index 9120c67..5bcb16b 100644
--- a/+quantity/Discrete.m
+++ b/+quantity/Discrete.m
@@ -1656,8 +1656,9 @@ classdef  (InferiorClasses = {?quantity.Symbolic}) Discrete ...
 				sa = size(a);
 				sb = size(b);
 				
-				if sa(2) == 0 && sb(1) == 0
-					error("Error: quantities with dimensions (n, 0) * (0, m) cannot be multiplied");
+				if sa(2) == 0 && sb(1) == 0 && sb(end) ~= 0
+					error("quantity:Discrete:mTimes", ...
+						"Error: quantities with dimensions (n, 0) * (0, m) cannot be multiplied");
 				else
 					P = quantity.Discrete.empty([sa(1:end-1) sb(2:end)]);
 				end
diff --git a/+unittests/+quantity/testDiscrete.m b/+unittests/+quantity/testDiscrete.m
index 825f7ee..e6f3901 100644
--- a/+unittests/+quantity/testDiscrete.m
+++ b/+unittests/+quantity/testDiscrete.m
@@ -1310,6 +1310,13 @@ testCase.verifyTrue( numeric.near( squeeze(double(a * 42)), [sin(z * pi) * 42, c
 
 testCase.verifyTrue( numeric.near( squeeze(double(s * a')), [sin(z * pi) * 42, cos(z * pi) * 42]));
 testCase.verifyTrue( numeric.near( squeeze(double(a * s)), [sin(z * pi) * 42, cos(z * pi) * 42]));
+%% test multiplication with empty quantities
+e1 = quantity.Discrete.empty([3, 0]);
+
+testCase.verifyTrue( isempty( e1.' * e1 ) );
+testCase.verifyError( @() e1 * e1.', "quantity:Discrete:mTimes" )
+testCase.verifyEqual( size(e1 * quantity.Discrete.empty()), [3 0])
+
 end
 
 function testOnConstant(testCase)
-- 
GitLab