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