From 0dd6b782ada56441259ef3f756ef5ecd0f6b783f Mon Sep 17 00:00:00 2001 From: Samuel GOUGEON Date: Fri, 13 Nov 2020 01:53:21 +0100 Subject: [PATCH] * Bug 16592 fixed: | and & between complex and boolean or [] http://bugzilla.scilab.org/16592 Change-Id: I6e40de20fcaa68e293c3a36837bca1fa85eaf81b --- scilab/CHANGES.md | 3 +- scilab/modules/ast/tests/unit_tests/and.dia.ref | 226 ----------------------- scilab/modules/ast/tests/unit_tests/and.tst | 37 ++++ scilab/modules/ast/tests/unit_tests/or.dia.ref | 82 -------- scilab/modules/ast/tests/unit_tests/or.tst | 32 ++++ scilab/modules/overloading/macros/%b_g_s.sci | 14 ++ scilab/modules/overloading/macros/%b_h_s.sci | 14 ++ scilab/modules/overloading/macros/%s_g_s.sci | 10 +- scilab/modules/overloading/macros/%s_h_b.sci | 14 ++ scilab/modules/overloading/macros/%s_h_s.sci | 10 +- 10 files changed, 127 insertions(+), 315 deletions(-) delete mode 100644 scilab/modules/ast/tests/unit_tests/and.dia.ref delete mode 100644 scilab/modules/ast/tests/unit_tests/or.dia.ref create mode 100644 scilab/modules/overloading/macros/%b_g_s.sci create mode 100644 scilab/modules/overloading/macros/%b_h_s.sci create mode 100644 scilab/modules/overloading/macros/%s_h_b.sci diff --git a/scilab/CHANGES.md b/scilab/CHANGES.md index 13058a9..0b9480d 100644 --- a/scilab/CHANGES.md +++ b/scilab/CHANGES.md @@ -440,7 +440,8 @@ Bug Fixes * [#16571](https://bugzilla.scilab.org/16571): `mfile2sci` had several issues when converting the NOT ~ operator: 1) `~(1-1)` was converted into `~1-1` instead of `~(1-1)` 2) ~ applied to an integer expression yielded an error from `convert2double` 3) `~i` was converted into `~%i` instead of `~abs(%i)`. * [#16573](https://bugzilla.scilab.org/16573): `mfile2sci`: Some `axis` conversions were wrong or not reliable. * [#16586](https://bugzilla.scilab.org/16586): `mfile2sci`: The `prettyprintoutput` flag badly managed appended comments. -* [#16596](https://bugzilla.scilab.org/16596): Concatenating encoded integers with sparse numeric data was not possible. +* [#16592](https://bugzilla.scilab.org/16592): %i|[], []|%i, %i&[], and []&%i were wrong. %t|%i, %t&%i, and %i&%t were not defined. +* [#16596](https://bugzilla.scilab.org/16596): Concatenating encoded integers with sparse numeric data was not possible. * [#16608](https://bugzilla.scilab.org/16608): `union` did not support input boolean, sparse boolean, nor sparse numerical matrices. The result of `union(complexA, complexB)` was wrongly conjugate. * [#16609](https://bugzilla.scilab.org/16609): `bitcmp` needed to be upgraded for Scilab 6. * [#16612](https://bugzilla.scilab.org/16612): Unlike the `.*.` operator, `kron()` was not defined for sparse numeric matrices. diff --git a/scilab/modules/ast/tests/unit_tests/and.dia.ref b/scilab/modules/ast/tests/unit_tests/and.dia.ref deleted file mode 100644 index 9d89abd..0000000 --- a/scilab/modules/ast/tests/unit_tests/and.dia.ref +++ /dev/null @@ -1,226 +0,0 @@ -// ============================================================================ -// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab -// Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS -// -// This file is distributed under the same license as the Scilab package. -// ============================================================================ -// -// <-- CLI SHELL MODE --> -empty = []; -r = 2; -R = [1,2;3,4]; -R3(:,:,1) = R; -R3(:,:,2) = R'; -c = 1 + 2*%i; -C = [1+2*%i,2+4*%i;3+6*%i,4+8*%i]; -C3(:,:,1) = C; -C3(:,:,2) = C'; -e = eye(); -ec = (5+%i) * eye(); -p = 1 + %s - %s**2; -pc = 1 + %s - %s**2 + ( 2 - 3 * %s + 4 * %s**2 ) * %i; -P = [2*p, -3*p;4*p,-5*p]; -PC = [2*pc, -3*pc;4*pc,-5*pc]; -SP = sparse([1,2;4,5;3,10],[1,2,3]); -SPC = sparse([1,2;4,5;3,10],[1,2,3]) * ( 1 + 4*%i); -SPB = sparse([1,2;2,1],[%t;%t],[2,2]); -i8 = int8(-8); -ui8 = uint8(8); -I8 = int8([-8 -16 ; -24 -32]); -UI8 = uint8([8 16 ; 24 32]); -I16 = int16([-16 -32 ; -48 -64]); -UI16 = uint16([16 32 ; 48 64]); -i16 = int16(-16); -ui16 = uint16(16); -i32 = int32(-32); -ui32 = uint32(32); -I32 = int32([-32 -64 ; -96 -128]); -UI32 = uint32([32 64 ; 96 128]); -str = "string"; -STR = ["string1" "string2";"string3" "string4"]; -b = %f; -B = [%t %f;%f %t]; -assert_checkequal(empty & empty, []); -assert_checkequal(empty & r, []); -assert_checkequal(empty & R, []); -assert_checkequal(empty & e, []); -assert_checkequal(empty & b, %f); -assert_checkequal(empty & B, [%t,%f;%f,%t]); -assert_checkequal(r & empty, []); -assert_checkequal(r & r, %t); -assert_checkequal(r & R, [%t,%t;%t,%t]); -assert_checkequal(r & e, %t); -assert_checkequal(r & b, %f); -assert_checkequal(r & B, [%t,%f;%f,%t]); -assert_checkequal(R & empty, []); -assert_checkequal(R & r, [%t,%t;%t,%t]); -assert_checkequal(R & R, [%t,%t;%t,%t]); -assert_checkequal(R & e, [%t,%t;%t,%t]); -assert_checkequal(R & b, [%f,%f;%f,%f]); -assert_checkequal(R & B, [%t,%f;%f,%t]); -assert_checkequal(e & empty, []); -assert_checkequal(e & r, %t); -assert_checkequal(e & R, [%t,%t;%t,%t]); -assert_checkequal(e & b, %f); -assert_checkequal(e & B, [%t,%f;%f,%t]); -assert_checkequal(b & empty, %f); -assert_checkequal(b & r, %f); -assert_checkequal(b & R, [%f,%f;%f,%f]); -assert_checkequal(b & e, %f); -assert_checkequal(b & b, %f); -assert_checkequal(b & B, [%f,%f;%f,%f]); -assert_checkequal(b & SPB, sparse([1,1], [%f], [2, 2])); -assert_checkequal(B & empty, [%t,%f;%f,%t]); -assert_checkequal(B & r, [%t,%f;%f,%t]); -assert_checkequal(B & R, [%t,%f;%f,%t]); -assert_checkequal(B & e, [%t,%f;%f,%t]); -assert_checkequal(B & b, [%f,%f;%f,%f]); -assert_checkequal(B & B, [%t,%f;%f,%t]); -assert_checkequal(B & SPB, sparse([1,1], [%f], [2, 2])); -assert_checkequal(SPB & b, sparse([1,1], [%f], [2, 2])); -assert_checkequal(SPB & B, sparse([1,1], [%f], [2, 2])); -assert_checkequal(SPB & SPB, sparse([1,2;2,1],[%t;%t],[2,2])); -assert_checkequal(i8 & i8, int8(-8)); -assert_checkequal(i8 & I8, int8([-8,-16;-24,-32])); -assert_checkequal(i8 & ui8, uint8(8)); -assert_checkequal(i8 & UI8, uint8([8,16;24,32])); -assert_checkequal(i8 & i16, int16(-16)); -assert_checkequal(i8 & I16, int16([-16,-32;-48,-64])); -assert_checkequal(i8 & ui16, uint16(16)); -assert_checkequal(i8 & UI16, uint16([16,32;48,64])); -assert_checkequal(i8 & i32, int32(-32)); -assert_checkequal(i8 & I32, int32([-32,-64;-96,-128])); -assert_checkequal(i8 & ui32, uint32(32)); -assert_checkequal(i8 & UI32, uint32([32,64;96,128])); -assert_checkequal(I8 & i8, int8([-8,-16;-24,-32])); -assert_checkequal(I8 & I8, int8([-8,-16;-24,-32])); -assert_checkequal(I8 & ui8, uint8([8,0;8,0])); -assert_checkequal(I8 & UI8, uint8([8,16;8,32])); -assert_checkequal(I8 & i16, int16([-16,-16;-32,-32])); -assert_checkequal(I8 & I16, int16([-16,-32;-64,-64])); -assert_checkequal(I8 & ui16, uint16([16,16;0,0])); -assert_checkequal(I8 & UI16, uint16([16,32;32,64])); -assert_checkequal(I8 & i32, int32([-32,-32;-32,-32])); -assert_checkequal(I8 & I32, int32([-32,-64;-96,-128])); -assert_checkequal(I8 & ui32, uint32([32,32;32,32])); -assert_checkequal(I8 & UI32, uint32([32,64;96,128])); -assert_checkequal(ui8 & i8, uint8(8)); -assert_checkequal(ui8 & I8, uint8([8,0;8,0])); -assert_checkequal(ui8 & ui8, uint8(8)); -assert_checkequal(ui8 & UI8, uint8([8,0;8,0])); -assert_checkequal(ui8 & i16, uint16(0)); -assert_checkequal(ui8 & I16, uint16([0,0;0,0])); -assert_checkequal(ui8 & ui16, uint16(0)); -assert_checkequal(ui8 & UI16, uint16([0,0;0,0])); -assert_checkequal(ui8 & i32, uint32(0)); -assert_checkequal(ui8 & I32, uint32([0,0;0,0])); -assert_checkequal(ui8 & ui32, uint32(0)); -assert_checkequal(ui8 & UI32, uint32([0,0;0,0])); -assert_checkequal(UI8 & i8, uint8([8,16;24,32])); -assert_checkequal(UI8 & I8, uint8([8,16;8,32])); -assert_checkequal(UI8 & ui8, uint8([8,0;8,0])); -assert_checkequal(UI8 & UI8, uint8([8,16;24,32])); -assert_checkequal(UI8 & i16, uint16([0,16;16,32])); -assert_checkequal(UI8 & I16, uint16([0,0;16,0])); -assert_checkequal(UI8 & ui16, uint16([0,16;16,0])); -assert_checkequal(UI8 & UI16, uint16([0,0;16,0])); -assert_checkequal(UI8 & i32, uint32([0,0;0,32])); -assert_checkequal(UI8 & I32, uint32([0,0;0,0])); -assert_checkequal(UI8 & ui32, uint32([0,0;0,32])); -assert_checkequal(UI8 & UI32, uint32([0,0;0,0])); -assert_checkequal(i16 & i8, int16(-16)); -assert_checkequal(i16 & I8, int16([-16,-16;-32,-32])); -assert_checkequal(i16 & ui8, uint16(0)); -assert_checkequal(i16 & UI8, uint16([0,16;16,32])); -assert_checkequal(i16 & i16, int16(-16)); -assert_checkequal(i16 & I16, int16([-16,-32;-48,-64])); -assert_checkequal(i16 & ui16, uint16(16)); -assert_checkequal(i16 & UI16, uint16([16,32;48,64])); -assert_checkequal(i16 & i32, int32(-32)); -assert_checkequal(i16 & I32, int32([-32,-64;-96,-128])); -assert_checkequal(i16 & ui32, uint32(32)); -assert_checkequal(i16 & UI32, uint32([32,64;96,128])); -assert_checkequal(I16 & i8, int16([-16,-32;-48,-64])); -assert_checkequal(I16 & I8, int16([-16,-32;-64,-64])); -assert_checkequal(I16 & ui8, uint16([0,0;0,0])); -assert_checkequal(I16 & UI8, uint16([0,0;16,0])); -assert_checkequal(I16 & i16, int16([-16,-32;-48,-64])); -assert_checkequal(I16 & I16, int16([-16,-32;-48,-64])); -assert_checkequal(I16 & ui16, uint16([16,0;16,0])); -assert_checkequal(I16 & UI16, uint16([16,32;16,64])); -assert_checkequal(I16 & i32, int32([-32,-32;-64,-64])); -assert_checkequal(I16 & I32, int32([-32,-64;-128,-128])); -assert_checkequal(I16 & ui32, uint32([32,32;0,0])); -assert_checkequal(I16 & UI32, uint32([32,64;64,128])); -assert_checkequal(ui16 & i8, uint16(16)); -assert_checkequal(ui16 & I8, uint16([16,16;0,0])); -assert_checkequal(ui16 & ui8, uint16(0)); -assert_checkequal(ui16 & UI8, uint16([0,16;16,0])); -assert_checkequal(ui16 & i16, uint16(16)); -assert_checkequal(ui16 & I16, uint16([16,0;16,0])); -assert_checkequal(ui16 & ui16, uint16(16)); -assert_checkequal(ui16 & UI16, uint16([16,0;16,0])); -assert_checkequal(ui16 & i32, uint32(0)); -assert_checkequal(ui16 & I32, uint32([0,0;0,0])); -assert_checkequal(ui16 & ui32, uint32(0)); -assert_checkequal(ui16 & UI32, uint32([0,0;0,0])); -assert_checkequal(UI16 & i8, uint16([16,32;48,64])); -assert_checkequal(UI16 & I8, uint16([16,32;32,64])); -assert_checkequal(UI16 & ui8, uint16([0,0;0,0])); -assert_checkequal(UI16 & UI8, uint16([0,0;16,0])); -assert_checkequal(UI16 & i16, uint16([16,32;48,64])); -assert_checkequal(UI16 & I16, uint16([16,32;16,64])); -assert_checkequal(UI16 & ui16, uint16([16,0;16,0])); -assert_checkequal(UI16 & UI16, uint16([16,32;48,64])); -assert_checkequal(UI16 & i32, uint32([0,32;32,64])); -assert_checkequal(UI16 & I32, uint32([0,0;32,0])); -assert_checkequal(UI16 & ui32, uint32([0,32;32,0])); -assert_checkequal(UI16 & UI32, uint32([0,0;32,0])); -assert_checkequal(i32 & i8, int32(-32)); -assert_checkequal(i32 & I8, int32([-32,-32;-32,-32])); -assert_checkequal(i32 & ui8, uint32(0)); -assert_checkequal(i32 & UI8, uint32([0,0;0,32])); -assert_checkequal(i32 & i16, int32(-32)); -assert_checkequal(i32 & I16, int32([-32,-32;-64,-64])); -assert_checkequal(i32 & ui16, uint32(0)); -assert_checkequal(i32 & UI16, uint32([0,32;32,64])); -assert_checkequal(i32 & i32, int32(-32)); -assert_checkequal(i32 & I32, int32([-32,-64;-96,-128])); -assert_checkequal(i32 & ui32, uint32(32)); -assert_checkequal(i32 & UI32, uint32([32,64;96,128])); -assert_checkequal(I32 & i8, int32([-32,-64;-96,-128])); -assert_checkequal(I32 & I8, int32([-32,-64;-96,-128])); -assert_checkequal(I32 & ui8, uint32([0,0;0,0])); -assert_checkequal(I32 & UI8, uint32([0,0;0,0])); -assert_checkequal(I32 & i16, int32([-32,-64;-96,-128])); -assert_checkequal(I32 & I16, int32([-32,-64;-128,-128])); -assert_checkequal(I32 & ui16, uint32([0,0;0,0])); -assert_checkequal(I32 & UI16, uint32([0,0;32,0])); -assert_checkequal(I32 & i32, int32([-32,-64;-96,-128])); -assert_checkequal(I32 & I32, int32([-32,-64;-96,-128])); -assert_checkequal(I32 & ui32, uint32([32,0;32,0])); -assert_checkequal(I32 & UI32, uint32([32,64;32,128])); -assert_checkequal(ui32 & i8, uint32(32)); -assert_checkequal(ui32 & I8, uint32([32,32;32,32])); -assert_checkequal(ui32 & ui8, uint32(0)); -assert_checkequal(ui32 & UI8, uint32([0,0;0,32])); -assert_checkequal(ui32 & i16, uint32(32)); -assert_checkequal(ui32 & I16, uint32([32,32;0,0])); -assert_checkequal(ui32 & ui16, uint32(0)); -assert_checkequal(ui32 & UI16, uint32([0,32;32,0])); -assert_checkequal(ui32 & i32, uint32(32)); -assert_checkequal(ui32 & I32, uint32([32,0;32,0])); -assert_checkequal(ui32 & ui32, uint32(32)); -assert_checkequal(ui32 & UI32, uint32([32,0;32,0])); -assert_checkequal(UI32 & i8, uint32([32,64;96,128])); -assert_checkequal(UI32 & I8, uint32([32,64;96,128])); -assert_checkequal(UI32 & ui8, uint32([0,0;0,0])); -assert_checkequal(UI32 & UI8, uint32([0,0;0,0])); -assert_checkequal(UI32 & i16, uint32([32,64;96,128])); -assert_checkequal(UI32 & I16, uint32([32,64;64,128])); -assert_checkequal(UI32 & ui16, uint32([0,0;0,0])); -assert_checkequal(UI32 & UI16, uint32([0,0;32,0])); -assert_checkequal(UI32 & i32, uint32([32,64;96,128])); -assert_checkequal(UI32 & I32, uint32([32,64;32,128])); -assert_checkequal(UI32 & ui32, uint32([32,0;32,0])); -assert_checkequal(UI32 & UI32, uint32([32,64;96,128])); diff --git a/scilab/modules/ast/tests/unit_tests/and.tst b/scilab/modules/ast/tests/unit_tests/and.tst index 3e6c624..2523443 100644 --- a/scilab/modules/ast/tests/unit_tests/and.tst +++ b/scilab/modules/ast/tests/unit_tests/and.tst @@ -1,11 +1,18 @@ // ============================================================================ // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab // Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS +// Copyright (C) 2020 - Samuel GOUGEON // // This file is distributed under the same license as the Scilab package. // ============================================================================ // // <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> +// +// <-- Short Description --> +// Unitary tests of the & operator +// +// See also: or_and.tst empty = []; r = 2; @@ -50,6 +57,8 @@ B = [%t %f;%f %t]; assert_checkequal(empty & empty, []); assert_checkequal(empty & r, []); assert_checkequal(empty & R, []); +assert_checkequal(empty & c, []); +assert_checkequal(empty & C, []); assert_checkequal(empty & e, []); assert_checkequal(empty & b, %f); assert_checkequal(empty & B, [%t,%f;%f,%t]); @@ -57,6 +66,8 @@ assert_checkequal(empty & B, [%t,%f;%f,%t]); assert_checkequal(r & empty, []); assert_checkequal(r & r, %t); assert_checkequal(r & R, [%t,%t;%t,%t]); +assert_checkequal(r & c, %t); +assert_checkequal(r & C, [%t,%t;%t,%t]); assert_checkequal(r & e, %t); assert_checkequal(r & b, %f); assert_checkequal(r & B, [%t,%f;%f,%t]); @@ -64,19 +75,43 @@ assert_checkequal(r & B, [%t,%f;%f,%t]); assert_checkequal(R & empty, []); assert_checkequal(R & r, [%t,%t;%t,%t]); assert_checkequal(R & R, [%t,%t;%t,%t]); +assert_checkequal(R & c, [%t,%t;%t,%t]); +assert_checkequal(R & C, [%t,%t;%t,%t]); assert_checkequal(R & e, [%t,%t;%t,%t]); assert_checkequal(R & b, [%f,%f;%f,%f]); assert_checkequal(R & B, [%t,%f;%f,%t]); +assert_checkequal(c & empty, []); +assert_checkequal(c & r, %t); +assert_checkequal(c & R, [%t,%t;%t,%t]); +assert_checkequal(c & c, %t); +assert_checkequal(c & C, [%t,%t;%t,%t]); +assert_checkequal(c & e, %t); +assert_checkequal(c & b, %f); +assert_checkequal(c & B, [%t,%f;%f,%t]); + +assert_checkequal(C & empty, []); +assert_checkequal(C & r, [%t,%t;%t,%t]); +assert_checkequal(C & R, [%t,%t;%t,%t]); +assert_checkequal(C & c, [%t,%t;%t,%t]); +assert_checkequal(C & C, [%t,%t;%t,%t]); +assert_checkequal(C & e, [%t,%t;%t,%t]); +assert_checkequal(C & b, [%f,%f;%f,%f]); +assert_checkequal(C & B, [%t,%f;%f,%t]); + assert_checkequal(e & empty, []); assert_checkequal(e & r, %t); assert_checkequal(e & R, [%t,%t;%t,%t]); +assert_checkequal(e & c, %t); +assert_checkequal(e & C, [%t,%t;%t,%t]); assert_checkequal(e & b, %f); assert_checkequal(e & B, [%t,%f;%f,%t]); assert_checkequal(b & empty, %f); assert_checkequal(b & r, %f); assert_checkequal(b & R, [%f,%f;%f,%f]); +assert_checkequal(b & c, %f); +assert_checkequal(b & C, [%f,%f;%f,%f]); assert_checkequal(b & e, %f); assert_checkequal(b & b, %f); assert_checkequal(b & B, [%f,%f;%f,%f]); @@ -85,6 +120,8 @@ assert_checkequal(b & SPB, sparse([1,1], [%f], [2, 2])); assert_checkequal(B & empty, [%t,%f;%f,%t]); assert_checkequal(B & r, [%t,%f;%f,%t]); assert_checkequal(B & R, [%t,%f;%f,%t]); +assert_checkequal(B & c, [%t,%f;%f,%t]); +assert_checkequal(B & C, [%t,%f;%f,%t]); assert_checkequal(B & e, [%t,%f;%f,%t]); assert_checkequal(B & b, [%f,%f;%f,%f]); assert_checkequal(B & B, [%t,%f;%f,%t]); diff --git a/scilab/modules/ast/tests/unit_tests/or.dia.ref b/scilab/modules/ast/tests/unit_tests/or.dia.ref deleted file mode 100644 index e9f89a7..0000000 --- a/scilab/modules/ast/tests/unit_tests/or.dia.ref +++ /dev/null @@ -1,82 +0,0 @@ -// ============================================================================ -// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab -// Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS -// -// This file is distributed under the same license as the Scilab package. -// ============================================================================ -// -// <-- CLI SHELL MODE --> -empty = []; -r = 2; -R = [1,2;3,4]; -R3(:,:,1) = R; -R3(:,:,2) = R'; -c = 1 + 2*%i; -C = [1+2*%i,2+4*%i;3+6*%i,4+8*%i]; -C3(:,:,1) = C; -C3(:,:,2) = C'; -e = eye(); -ec = (5+%i) * eye(); -p = 1 + %s - %s**2; -pc = 1 + %s - %s**2 + ( 2 - 3 * %s + 4 * %s**2 ) * %i; -P = [2*p, -3*p;4*p,-5*p]; -PC = [2*pc, -3*pc;4*pc,-5*pc]; -SP = sparse([1,2;4,5;3,10],[1,2,3]); -SPC = sparse([1,2;4,5;3,10],[1,2,3]) * ( 1 + 4*%i); -SPB = sparse([1,2;2,1],[%t;%t],[2,2]); -i8 = int8(-8); -ui8 = uint8(8); -I8 = int8([-8 -16 ; -24 -32]); -UI8 = uint8([8 16 ; 24 32]); -I16 = int16([-16 -32 ; -48 -64]); -UI16 = uint16([16 32 ; 48 64]); -i16 = int16(-16); -ui16 = uint16(16); -i32 = int32(-32); -ui32 = uint32(32); -I32 = int32([-32 -64 ; -96 -128]); -UI32 = uint32([32 64 ; 96 128]); -str = "string"; -STR = ["string1" "string2";"string3" "string4"]; -b = %f; -B = [%t %f;%f %t]; -assert_checkequal(empty | empty, []); -assert_checkequal(empty | r, []); -assert_checkequal(empty | R, []); -assert_checkequal(empty | e, []); -assert_checkequal(empty | b, %t); -assert_checkequal(empty | B, [%t %t;%t %t]); -assert_checkequal(r | empty, []); -assert_checkequal(r | r, %t); -assert_checkequal(r | R, [%t,%t;%t,%t]); -assert_checkequal(r | e, %t); -assert_checkequal(r | b, %t); -assert_checkequal(r | B, [%t,%t;%t,%t]); -assert_checkequal(R | empty, []); -assert_checkequal(R | r, [%t,%t;%t,%t]); -assert_checkequal(R | R, [%t,%t;%t,%t]); -assert_checkequal(R | e, [%t,%t;%t,%t]); -assert_checkequal(R | b, [%t,%t;%t,%t]); -assert_checkequal(R | B, [%t,%t;%t,%t]); -assert_checkequal(e | empty, []); -assert_checkequal(e | r, %t); -assert_checkequal(e | R, [%t,%t;%t,%t]); -assert_checkequal(e | b, %t); -assert_checkequal(e | B, [%t,%t;%t,%t]); -assert_checkequal(b | empty, %t); -assert_checkequal(b | r, %t); -assert_checkequal(b | R, [%t,%t;%t,%t]); -assert_checkequal(b | e, %t); -assert_checkequal(b | b, %f); -assert_checkequal(b | B, [%t,%f;%f,%t]); -assert_checkequal(b | SPB, sparse([1,2;2,1],[%t;%t],[2,2])); -assert_checkequal(B | empty, [%t,%t;%t,%t]); -assert_checkequal(B | r, [%t,%t;%t,%t]); -assert_checkequal(B | R, [%t,%t;%t,%t]); -assert_checkequal(B | e, [%t,%t;%t,%t]); -assert_checkequal(B | b, [%t,%f;%f,%t]); -assert_checkequal(B | B, [%t,%f;%f,%t]); -assert_checkequal(B | SPB, sparse([1,1;1,2;2,1;2,2],[%t;%t;%t;%t],[2,2])); -assert_checkequal(SPB | b, sparse([1,2;2,1],[%t;%t],[2,2])); -assert_checkequal(SPB | B, sparse([1,1;1,2;2,1;2,2],[%t;%t;%t;%t],[2,2])); -assert_checkequal(SPB | SPB, sparse([1,2;2,1],[%t;%t],[2,2])); diff --git a/scilab/modules/ast/tests/unit_tests/or.tst b/scilab/modules/ast/tests/unit_tests/or.tst index 5e0d2cc..f3bb35f 100644 --- a/scilab/modules/ast/tests/unit_tests/or.tst +++ b/scilab/modules/ast/tests/unit_tests/or.tst @@ -1,11 +1,13 @@ // ============================================================================ // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab // Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS +// Copyright (C) 2020 - Samuel GOUGEON // // This file is distributed under the same license as the Scilab package. // ============================================================================ // // <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> empty = []; r = 2; @@ -51,6 +53,8 @@ B = [%t %f;%f %t]; assert_checkequal(empty | empty, []); assert_checkequal(empty | r, []); assert_checkequal(empty | R, []); +assert_checkequal(empty | c, []); +assert_checkequal(empty | C, []); assert_checkequal(empty | e, []); assert_checkequal(empty | b, %t); assert_checkequal(empty | B, [%t %t;%t %t]); @@ -58,6 +62,8 @@ assert_checkequal(empty | B, [%t %t;%t %t]); assert_checkequal(r | empty, []); assert_checkequal(r | r, %t); assert_checkequal(r | R, [%t,%t;%t,%t]); +assert_checkequal(r | c, %t); +assert_checkequal(r | C, [%t,%t;%t,%t]); assert_checkequal(r | e, %t); assert_checkequal(r | b, %t); assert_checkequal(r | B, [%t,%t;%t,%t]); @@ -65,19 +71,43 @@ assert_checkequal(r | B, [%t,%t;%t,%t]); assert_checkequal(R | empty, []); assert_checkequal(R | r, [%t,%t;%t,%t]); assert_checkequal(R | R, [%t,%t;%t,%t]); +assert_checkequal(R | c, [%t,%t;%t,%t]); +assert_checkequal(R | C, [%t,%t;%t,%t]); assert_checkequal(R | e, [%t,%t;%t,%t]); assert_checkequal(R | b, [%t,%t;%t,%t]); assert_checkequal(R | B, [%t,%t;%t,%t]); +assert_checkequal(c | empty, []); +assert_checkequal(c | r, %t); +assert_checkequal(c | R, [%t,%t;%t,%t]); +assert_checkequal(c | c, %t); +assert_checkequal(c | C, [%t,%t;%t,%t]); +assert_checkequal(c | e, %t); +assert_checkequal(c | b, %t); +assert_checkequal(c | B, [%t,%t;%t,%t]); + +assert_checkequal(C | empty, []); +assert_checkequal(C | r, [%t,%t;%t,%t]); +assert_checkequal(C | R, [%t,%t;%t,%t]); +assert_checkequal(C | c, [%t,%t;%t,%t]); +assert_checkequal(C | C, [%t,%t;%t,%t]); +assert_checkequal(C | e, [%t,%t;%t,%t]); +assert_checkequal(C | b, [%t,%t;%t,%t]); +assert_checkequal(C | B, [%t,%t;%t,%t]); + assert_checkequal(e | empty, []); assert_checkequal(e | r, %t); assert_checkequal(e | R, [%t,%t;%t,%t]); +assert_checkequal(e | c, %t); +assert_checkequal(e | C, [%t,%t;%t,%t]); assert_checkequal(e | b, %t); assert_checkequal(e | B, [%t,%t;%t,%t]); assert_checkequal(b | empty, %t); assert_checkequal(b | r, %t); assert_checkequal(b | R, [%t,%t;%t,%t]); +assert_checkequal(b | c, %t); +assert_checkequal(b | C, [%t,%t;%t,%t]); assert_checkequal(b | e, %t); assert_checkequal(b | b, %f); assert_checkequal(b | B, [%t,%f;%f,%t]); @@ -86,6 +116,8 @@ assert_checkequal(b | SPB, sparse([1,2;2,1],[%t;%t],[2,2])); assert_checkequal(B | empty, [%t,%t;%t,%t]); assert_checkequal(B | r, [%t,%t;%t,%t]); assert_checkequal(B | R, [%t,%t;%t,%t]); +assert_checkequal(B | c, [%t,%t;%t,%t]); +assert_checkequal(B | C, [%t,%t;%t,%t]); assert_checkequal(B | e, [%t,%t;%t,%t]); assert_checkequal(B | b, [%t,%f;%f,%t]); assert_checkequal(B | B, [%t,%f;%f,%t]); diff --git a/scilab/modules/overloading/macros/%b_g_s.sci b/scilab/modules/overloading/macros/%b_g_s.sci new file mode 100644 index 0000000..97491a1 --- /dev/null +++ b/scilab/modules/overloading/macros/%b_g_s.sci @@ -0,0 +1,14 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2020 - Samuel GOUGEON +// +// This file is hereby licensed under the terms of the GNU GPL v2.0, +// pursuant to article 5.3.4 of the CeCILL v.2.1. +// This file was originally licensed under the terms of the CeCILL v2.1, +// and continues to be available under such terms. +// For more information, see the COPYING file which you should have received +// along with this program. + +function res = %b_g_s(b1, s2) + // bool | complex + res = b1 | (s2<>0); +endfunction diff --git a/scilab/modules/overloading/macros/%b_h_s.sci b/scilab/modules/overloading/macros/%b_h_s.sci new file mode 100644 index 0000000..4f7526a --- /dev/null +++ b/scilab/modules/overloading/macros/%b_h_s.sci @@ -0,0 +1,14 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2020 - Samuel GOUGEON +// +// This file is hereby licensed under the terms of the GNU GPL v2.0, +// pursuant to article 5.3.4 of the CeCILL v.2.1. +// This file was originally licensed under the terms of the CeCILL v2.1, +// and continues to be available under such terms. +// For more information, see the COPYING file which you should have received +// along with this program. + +function res = %b_h_s(b1, s2) + // boolean & complex + res = b1 & (s2<>0); +endfunction diff --git a/scilab/modules/overloading/macros/%s_g_s.sci b/scilab/modules/overloading/macros/%s_g_s.sci index 3b986b3..bde6995 100644 --- a/scilab/modules/overloading/macros/%s_g_s.sci +++ b/scilab/modules/overloading/macros/%s_g_s.sci @@ -1,8 +1,8 @@ // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab // Copyright (C) INRIA -// // Copyright (C) 2012 - 2016 - Scilab Enterprises // Copyright (C) 2016 - Scilab Enterprises - Pierre-Aimé AGNEL +// Copyright (C) 2020 - Samuel GOUGEON // // This file is hereby licensed under the terms of the GNU GPL v2.0, // pursuant to article 5.3.4 of the CeCILL v.2.1. @@ -11,7 +11,11 @@ // For more information, see the COPYING file which you should have received // along with this program. -function res=%s_g_s(s1,s2) +function res = %s_g_s(s1,s2) // Logical operand on complex numbers - res = (s1<>0) | (s2<>0); + if s1==[] | s2==[] then + res = [] + else + res = (s1<>0) | (s2<>0); + end endfunction diff --git a/scilab/modules/overloading/macros/%s_h_b.sci b/scilab/modules/overloading/macros/%s_h_b.sci new file mode 100644 index 0000000..f46e9b2 --- /dev/null +++ b/scilab/modules/overloading/macros/%s_h_b.sci @@ -0,0 +1,14 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2020 - Samuel GOUGEON +// +// This file is hereby licensed under the terms of the GNU GPL v2.0, +// pursuant to article 5.3.4 of the CeCILL v.2.1. +// This file was originally licensed under the terms of the CeCILL v2.1, +// and continues to be available under such terms. +// For more information, see the COPYING file which you should have received +// along with this program. + +function res = %s_h_b(s1, b2) + // complex & boolean + res = (s1<>0) & b2; +endfunction diff --git a/scilab/modules/overloading/macros/%s_h_s.sci b/scilab/modules/overloading/macros/%s_h_s.sci index 7b7ef39..0106355 100644 --- a/scilab/modules/overloading/macros/%s_h_s.sci +++ b/scilab/modules/overloading/macros/%s_h_s.sci @@ -1,8 +1,8 @@ // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab // Copyright (C) INRIA -// // Copyright (C) 2012 - 2016 - Scilab Enterprises // Copyright (C) 2016 - Scilab Enterprises - Pierre-Aimé AGNEL +// Copyright (C) 2020 - Samuel GOUGEON // // This file is hereby licensed under the terms of the GNU GPL v2.0, // pursuant to article 5.3.4 of the CeCILL v.2.1. @@ -11,7 +11,11 @@ // For more information, see the COPYING file which you should have received // along with this program. -function res=%s_h_s(s1,s2) +function res = %s_h_s(s1,s2) // Logical operand on complex numbers - res = (s1<>0) & (s2<>0); + if s1==[] | s2==[] then + res = [] + else + res = (s1<>0) & (s2<>0); + end endfunction -- 1.7.9.5