diff --git a/+quantity/Discrete.m b/+quantity/Discrete.m index 9120c67ef12e52bcc20712e20a59860f58a40c31..5bcb16bffb1579cada7fb982c8861e3f49c667ad 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 825f7ee01e8bf0a49ff948b40b9b2c573085e696..e6f3901d88656f0cdc027e866227197ef4b42cfd 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)