From: Robert D. <rob...@us...> - 2007-07-04 02:37:09
|
Update of /cvsroot/maxima/maxima/tests In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv3769/tests Modified Files: rtest_equal.mac testsuite.lisp Log Message: New code to implement equivalence tests (i.e. special cases in MEQP, the function eventually called by is(equal(...))) for Maxima arrays. * src/compar.lisp: (1) New functions MAXIMA-DECLARED-ARRAYP, MAXIMA-UNDECLARED-ARRAYP (2) New special cases in MEQP for objects which satisfy MAXIMA-DECLARED-ARRAYP and MAXIMA-UNDECLARED-ARRAYP (3) New functions MAXIMA-DECLARED-ARRAY-MEQP and MAXIMA-UNDECLARED-ARRAY-MEQP which are called from MEQP (3) Incidentally, rephrase tests in MEQP for strings and Lisp arrays (logic was strange before, not sure what I was thinking there) (4) Incidentally, bind $RATPRINT to NIL in array element comparison (messages about float-to-rational conversion are superfluous in this context) * src/simp.lisp: (1) Rename ARRAY-ALIKE1 to more specific LISP-ARRAY-ALIKE1 (2) Special cases in ALIKE1 (but commented out) for Maxima arrays; not sure if we want to enable is(a = b) comparison of Maxima arrays, so just preserve the code until someone decides it is too ugly to tolerate any longer. (3) New functions MAXIMA-DECLARED-ARRAY-ALIKE1, MAXIMA-UNDECLARED-ARRAY-ALIKE1 (not called from anywhere; calls in ALIKE1 are commented out) * share/contrib/numericalio/rtest_numericalio.mac: Make use of Maxima array comparisons in test script * tests/rtest_equal.mac: New tests for equivalence of Maxima arrays * tests/testsuite.lisp: Mark two tests in rtest_equal as known failures (comparison of array functions and subscripted functions is not handled correctly by Maxima array comparison code at present) Index: rtest_equal.mac =================================================================== RCS file: /cvsroot/maxima/maxima/tests/rtest_equal.mac,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- rtest_equal.mac 14 May 2007 03:43:50 -0000 1.3 +++ rtest_equal.mac 4 Jul 2007 02:37:03 -0000 1.4 @@ -453,6 +453,8 @@ * Maxima string * Lisp string * Lisp array + * Maxima declared array + * Maxima undeclared array */ (mstring1a : "FOO", @@ -472,6 +474,49 @@ larray3 : make_array (any, 10), fillarray (larray3, makelist (i, i, 1, 10)), + array (marray_declared_1, fixnum, 3, 4), + fillarray (marray_declared_1, makelist (i, i, 1, 20)), + array (marray_declared_2, fixnum, 3, 4), + fillarray (marray_declared_2, makelist (i, i, 1, 20)), + array (marray_declared_3, flonum, 3, 4), + fillarray (marray_declared_3, makelist (float(i), i, 1, 20)), + array (marray_declared_4, fixnum, 4, 3), + fillarray (marray_declared_4, makelist (2*i, i, 1, 20)), + + marray_undeclared_1 [foo, bar] : 1234, + marray_undeclared_1 [baz, quux] : 2345, + marray_undeclared_2 [foo, bar] : 1234, + marray_undeclared_2 [baz, quux] : 2345, + marray_undeclared_3 [foo, bar] : 3456, + marray_undeclared_3 [baz, quux] : 4567, + marray_undeclared_4 [foo, bar, baz] : 5678, + + marray_array_fcn_1 [u, v, w] := u*v*w, + marray_array_fcn_1 [2, 3, 4], + marray_array_fcn_1 [a, b, c], + marray_array_fcn_2 [u, v, w] := u*v*w, + marray_array_fcn_2 [2, 3, 4], + marray_array_fcn_2 [a, b, c], + marray_array_fcn_3 [u, v, w] := u*v*w, + marray_array_fcn_3 [7, x, 4], + marray_array_fcn_3 [a, 3, c], + marray_array_fcn_4 [u, v, w] := u + v + w, + marray_array_fcn_4 [2, 3, 4], + marray_array_fcn_4 [a, b, c], + + marray_subscripted_fcn_1 [a, b] (x, y) := x^a + y^b, + marray_subscripted_fcn_1 [3, 2] (u, 7), + marray_subscripted_fcn_1 [m, n] (2, z), + marray_subscripted_fcn_2 [a, b] (x, y) := x^a + y^b, + marray_subscripted_fcn_2 [3, 2] (u, 7), + marray_subscripted_fcn_2 [m, n] (2, z), + marray_subscripted_fcn_3 [a, b] (x, y) := x^a + y^b, + marray_subscripted_fcn_3 [2, 5] (8, q), + marray_subscripted_fcn_3 [1, t] (9, e), + marray_subscripted_fcn_4 [a, b] (x, y) := a*x - b*y, + marray_subscripted_fcn_4 [3, 2] (u, 7), + marray_subscripted_fcn_4 [m, n] (2, z), + 0); 0; @@ -498,6 +543,49 @@ is (equal (larray1a, larray3)); false; +is (equal (marray_declared_1, marray_declared_2)); +true; + +is (equal (marray_declared_1, marray_declared_3)); +true; + +is (equal (marray_declared_1, marray_declared_4)); +false; + +is (equal (marray_undeclared_1, marray_undeclared_2)); +true; + +is (equal (marray_undeclared_1, marray_undeclared_3)); +false; + +is (equal (marray_undeclared_1, marray_undeclared_4)); +false; + +is (equal (marray_array_fcn_1, marray_array_fcn_2)); +true; + +/* This test fails at present because array functions are + * compared via arrayinfo and listarray output, + * but array functions should be compared via their AEXPR properties. + */ +is (equal (marray_array_fcn_1, marray_array_fcn_3)); +true; + +is (equal (marray_array_fcn_1, marray_array_fcn_4)); +false; + +is (equal (marray_subscripted_fcn_1, marray_subscripted_fcn_2)); +true; + +/* This test fails at present because subscripted functions are + * compared via arrayinfo and listarray output, + * but subscripted functions should be compared via their AEXPR properties. + */ +is (equal (marray_subscripted_fcn_1, marray_subscripted_fcn_3)); +true; + +is (equal (marray_subscripted_fcn_1, marray_subscripted_fcn_4)); +unknown; /* comparison of non-identical lambda expressions yields unknown */ /* Comparisons to different type */ @@ -552,6 +640,28 @@ is (equal (larray1a, sin('x))); false; +/* No automatic conversions between array types */ + +(similar_lisp_array : make_array (fixnum, 4, 5), + fillarray (similar_lisp_array, makelist (i, i, 1, 20)), + is (equal (marray_declared_1, similar_lisp_array))); +false; + +(for i:0 thru 3 + do for j:0 thru 4 + do similar_undeclared_marray [i, j] : i*5 + j + 1, + is (equal (marray_declared_1, similar_undeclared_marray))); +false; + +/* No automatic conversions between array and list or matrix */ + +(similar_nested_list : [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]], + is (equal (marray_declared_1, similar_nested_list))); +false; + +(similar_matrix : apply (matrix, similar_nested_list), + is (equal (marray_declared_1, similar_matrix))); +false; /* Comparisons via = */ Index: testsuite.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/tests/testsuite.lisp,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- testsuite.lisp 18 Jun 2007 03:06:38 -0000 1.56 +++ testsuite.lisp 4 Jul 2007 02:37:04 -0000 1.57 @@ -32,7 +32,7 @@ "rtest_everysome" "rtestint" "rtestifactor" - "rtest_equal" + ((mlist) "rtest_equal" 159 162) ((mlist) "rtest_abs" 42 43) ((mlist) "rtest_taylor" 66 67 72 88 89 90 91 94 96 99 104 110 112 113 118 119 120 121 122 123 124) ((mlist) "rtest_dot") |