From jpr|t|k|n @end|ng |rom pobox@com  Fri Apr  5 18:05:36 2019
From: jpr|t|k|n @end|ng |rom pobox@com (Joshua N Pritikin)
Date: Fri, 5 Apr 2019 12:05:36 -0400
Subject: [Rd] patch to improve matrix conformability error message
Message-ID: <20190405160536.GB13959@cocoa>

With this patch,

> A <- matrix(1, 2, 2)
> B <- matrix(2, 3, 2)
> A %*% B
Error in A %*% B : 
  non-conformable arguments of dimension (2, 2) and (3, 2)

>From 205b591d4d14b5ff667325fb233a6deb08314726 Mon Sep 17 00:00:00 2001
From: Joshua Nathaniel Pritikin <jpritikin at pobox.com>
Date: Fri, 5 Apr 2019 12:03:58 -0400
Subject: [PATCH] Improve non-conformable arguments error message

---
 src/main/array.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/array.c b/src/main/array.c
index 4b95e33..cedf627 100644
--- a/src/main/array.c
+++ b/src/main/array.c
@@ -1350,15 +1350,18 @@ SEXP attribute_hidden do_matprod(SEXP call, SEXP op, SEXP args, SEXP rho)
     if (PRIMVAL(op) == 0) {
 	/* primitive, so use call */
 	if (ncx != nry)
-	    errorcall(call, _("non-conformable arguments"));
+	  errorcall(call, _("non-conformable arguments of dimension (%d, %d) and (%d, %d)"),
+		    nrx, ncx, nry, ncy);
     }
     else if (PRIMVAL(op) == 1) {
 	if (nrx != nry)
-	    error(_("non-conformable arguments"));
+	  error(_("non-conformable arguments of dimension (%d, %d) and (%d, %d)"),
+		nrx, ncx, nry, ncy);
     }
     else {
 	if (ncx != ncy)
-	    error(_("non-conformable arguments"));
+	  error(_("non-conformable arguments of dimension (%d, %d) and (%d, %d)"),
+		nrx, ncx, nry, ncy);
     }
 
     if (isComplex(CAR(args)) || isComplex(CADR(args)))
-- 
2.19.1



[Rd] patch to improve matrix conformability error message
Joshua N Pritikin