* [#16622](https://bugzilla.scilab.org/16622): `inv` could no longer be overloaded for hypermatrices of decimal or complex numbers.
* [#16623](https://bugzilla.scilab.org/16623): `rand(2,2,2)^2` yielded a wrong result instead of trying to call the `%s_p_s` overload for input hypermatrices.
* [#16624](https://bugzilla.scilab.org/16624): `fullfile` badly handled any forced final file separator when building a directory's path.
+* [#16626](https://bugzilla.scilab.org/16626): == and <> between libraries were no longer defined.
* [#16629](https://bugzilla.scilab.org/16629): `interp1`'s documentation did not tell the spline edges conditions ; extrapolation modes were poorly explained. ; the description of the result's size was completely wrong ; x as an option was not documented. A wrong extrapolation value could silently return a wrong result. There was some dead code like `if varargin(5)==%nan`. A bugged error message yielded its own error. When x is implicit, the argument index in error messages could be wrong. `periodic` and `edgevalue` extrapolation modes were not available. `linear` extrapolation was not available for splines. When `xp` is an hypermatrix with `size(xp,1)==1`, the size of the result was irregular/wrong.
* [#16644](https://bugzilla.scilab.org/16644): `input("message:")` yielded a wrong error message about `mprintf` in case of non-interpretable input.
* [#16654](https://bugzilla.scilab.org/16654): `interp` was leaking memory.
assert_checkequal(B == ec, %f);
assert_checkequal(B == p, %f);
assert_checkequal(B == pc, %f);
+
assert_checkequal(B == P, %f);
assert_checkequal(B == PC, %f);
assert_checkequal(B == SP, %f);
assert_checkequal(["a" "b" "c"] == ["a" "b"],%f);
assert_checkequal(["a" "b"; "a" "b"] == ["a" "b"],%f);
-//macro
-deff("[x]=myplus(y,z)","x=y+z");
-
-deff("[x]=mymacro(y,z)",["a=3*y+1"; "x=a*z+y"]);
-
-assert_checkequal(myplus == myplus,%t);
-assert_checkequal(myplus == mymacro,%f);
-assert_checkequal(myplus == [],%f);
-assert_checkequal(myplus == 2,%f);
-
//struct
test_st=struct("double",1,"string","test","int8",int8(2),"struct",struct("valeur",0));
test_st2=struct("double",1,"string","test","int16",int8(2),"struct",1);
assert_checkequal([test_st, test_st4;test_st4,test_st8] == [test_st, test_st; test_st,test_st], [%t, %f; %f , %f]);
assert_checkequal(test_st == [], %f);
-//function
-assert_checkequal(acosd == acosd, %t);
-assert_checkequal(acosd == [], %f);
-assert_checkequal(acosd == 2, %f);
-
//polynom
res = horner(1/(1-%s),1/(1-%s));
ludel(ptr);
xmlDelete(xml);
mdelete(h5File);
+
+//macro
+deff("[x]=myplus(y,z)","x=y+z");
+
+deff("[x]=mymacro(y,z)",["a=3*y+1"; "x=a*z+y"]);
+
+assert_checkequal(myplus == myplus,%t);
+assert_checkequal(myplus == mymacro,%f);
+assert_checkequal(myplus == [],%f);
+assert_checkequal(myplus == 2,%f);
+
+//function
+assert_checkequal(acosd == acosd, %t);
+assert_checkequal(acosd == [], %f);
+assert_checkequal(acosd == 2, %f);
+
+// libraries
+assert_checkequal(iolib == iolib, %t);
assert_checkequal(["a" "b" "c"] <> ["a" "b"],%t);
assert_checkequal(["a" "b"; "a" "b"] <> ["a" "b"],%t);
-//macro
-deff("[x]=myplus(y,z)","x=y+z");
-
-deff("[x]=mymacro(y,z)",["a=3*y+1"; "x=a*z+y"]);
-
-assert_checkequal(myplus <> myplus,%f);
-assert_checkequal(myplus <> mymacro,%t);
-assert_checkequal(myplus <> [],%t);
-assert_checkequal(myplus <> 2,%t);
-
//struct
test_st=struct("double",1,"string","test","int8",int8(2),"struct",struct("valeur",0));
test_st2=struct("double",1,"string","test","int16",int8(2),"struct",1);
assert_checkequal([test_st, test_st4;test_st4,test_st8] <> [test_st, test_st; test_st,test_st], [%f,%t;%t,%t]);
assert_checkequal(test_st <> [], %t);
-//function
-assert_checkequal(acosd <> acosd, %f);
-assert_checkequal(acosd <> [], %t);
-assert_checkequal(acosd <> 2, %t);
-
//polynom
res = horner(1/(1-%s),1/(1-%s));
ludel(ptr);
xmlDelete(xml);
mdelete(h5File);
+
+//macro
+deff("[x]=myplus(y,z)","x=y+z");
+
+deff("[x]=mymacro(y,z)",["a=3*y+1"; "x=a*z+y"]);
+
+assert_checkequal(myplus <> myplus,%f);
+assert_checkequal(myplus <> mymacro,%t);
+assert_checkequal(myplus <> [],%t);
+assert_checkequal(myplus <> 2,%t);
+
+//function
+assert_checkequal(acosd <> acosd, %f);
+assert_checkequal(acosd <> [], %t);
+assert_checkequal(acosd <> 2, %t);
+
+// libraries
+assert_checktrue(iolib <> corelib);
--- /dev/null
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2021 - 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 y = %f_n_f(L1, L2)
+ y = ~%f_o_f(L1, L2)
+endfunction
--- /dev/null
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2021 - 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 y = %f_o_f(L1, L2)
+ path1 = string(L1)(1)
+ path2 = string(L2)(1)
+ y = path1 == path2
+endfunction