1// ============================================================================ 2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab 3// 4// Copyright (C) 2019-2020 - Samuel GOUGEON 5// 6// This file is distributed under the same license as the Scilab package. 7// ============================================================================ 8 9// <-- CLI SHELL MODE --> 10// <-- NO CHECK REF --> 11// 12// --------------------------------------------- 13// <-- Unit test for ./. and .\. operators --> 14// --------------------------------------------- 15 16rtol = 10*%eps; 17objects = list(rand(1,1), rand(1,3), rand(4,1), rand(1,1,5), rand(2,3), rand(3,4,2)); 18n = length(objects); 19 20// With arrays without zeros 21// ========================= 22for i = 1:n 23 o = objects(i); 24 for j = 1:n 25 o2 = objects(j); 26 b = o .*. o2; 27 assert_checkalmostequal(b ./. o2, o, rtol) 28 assert_checkalmostequal(o .\. b, o2, rtol) 29 end 30end 31 32// With a null array 33// ================= 34z = list(zeros(1,1), zeros(1,3), zeros(4,1), zeros(1,1,5), zeros(2,3), zeros(3,4,2)); 35for i = 1:n 36 o = objects(i); 37 for j = 1:n 38 o2 = z(j); 39 b = o .*. o2; 40 //assert_checkalmostequal(b ./. o2, o, rtol) // => Nan | not managed 41 assert_checkalmostequal(o .\. b, o2, rtol) 42 43 b = o2 .*. o; 44 assert_checkalmostequal(b ./. o, o2, rtol) 45 //assert_checkalmostequal(o2 .\. b, o, rtol) // => Nan | not managed 46 end 47end 48 49// With arrays with zeros 50// ====================== 51withZeros = list(1, 0:3, [2 0 1]', cat(3,3,0,2,0), [2 3 0 ; 1 0 2], .. 52 matrix([0,3,1,2,0,2,3,0,3,3,3,2,3,1,0,0,3,3,1,0,3,3,0,0], [3,4,2])); 53for i = 1:n 54 o = objects(i); 55 for j = 1:n 56 // Without zeros .*. with zeros 57 // ............................ 58 o2 = withZeros(j); 59 b = o .*. o2; 60 assert_checkalmostequal(b ./. o2, o, rtol) 61 assert_checkalmostequal(o .\. b, o2, rtol) 62 63 b = o2 .*. o; 64 assert_checkalmostequal(b ./. o, o2, rtol) 65 assert_checkalmostequal(o2 .\. b, o, rtol) 66 67 // With zeros .*. with zeros 68 // ......................... 69 o = withZeros(i); 70 b = o .*. o2; 71 assert_checkalmostequal(b ./. o2, o, rtol) 72 assert_checkalmostequal(o .\. b, o2, rtol) 73 74 b = o2 .*. o; 75 assert_checkalmostequal(b ./. o, o2, rtol) 76 assert_checkalmostequal(o2 .\. b, o, rtol) 77 end 78end 79 80// Between sparse matrices 81// ======================= 82rtol = 10*%eps; 83objects = list(sprand(10,1,0.5), sprand(1,8,0.5), sprand(5,5,0.5)); 84n = length(objects); 85 86for i = 1:n 87 o = objects(i); 88 for j = 1:n 89 o2 = objects(j); 90 b = o .*. o2; 91 assert_checkalmostequal(b ./. o2, o, rtol) 92 assert_checkalmostequal(o .\. b, o2, rtol) 93 end 94end 95