summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2022-05-29 16:13:56 +0200
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2022-05-29 16:13:56 +0200
commit2229af6209d84b65e9d941f6f2a239e927a70224 (patch)
tree71371012ab267eb63c7dbcd90f3cb9381b7de7db
parentbf258a7a298224769c37aa6ace378f1454bbefd1 (diff)
downloadgmp-2229af6209d84b65e9d941f6f2a239e927a70224.tar.gz
tests/mpz/t-aorsmul.c (check_sqr): New function to test mpz_aorsmul (w,x,x)
-rw-r--r--tests/mpz/t-aorsmul.c47
1 files changed, 45 insertions, 2 deletions
diff --git a/tests/mpz/t-aorsmul.c b/tests/mpz/t-aorsmul.c
index f31e75820..4bd435d2e 100644
--- a/tests/mpz/t-aorsmul.c
+++ b/tests/mpz/t-aorsmul.c
@@ -1,6 +1,6 @@
/* Test mpz_addmul, mpz_addmul_ui, mpz_submul, mpz_submul_ui.
-Copyright 2001, 2002 Free Software Foundation, Inc.
+Copyright 2001, 2002, 2022 Free Software Foundation, Inc.
This file is part of the GNU MP Library test suite.
@@ -155,7 +155,8 @@ check_one (mpz_srcptr w, mpz_srcptr x, mpz_srcptr y)
abort ();
}
- mpz_mul (want, x, y);
+
+ mpz_sub (want, want, w);
mpz_sub (want, w, want);
mpz_set (got, w);
mpz_submul (got, x, y);
@@ -171,6 +172,45 @@ check_one (mpz_srcptr w, mpz_srcptr x, mpz_srcptr y)
}
void
+check_sqr (mpz_srcptr w, mpz_srcptr x)
+{
+ mpz_t want, got;
+
+ mpz_init (want);
+ mpz_init (got);
+
+ mpz_mul (want, x, x);
+ mpz_add (want, w, want);
+ mpz_set (got, w);
+ mpz_addmul (got, x, x);
+ MPZ_CHECK_FORMAT (got);
+ if (mpz_cmp (want, got) != 0)
+ {
+ printf ("mpz_addmul xx fail\n");
+ sqrfail:
+ mpz_trace ("w", w);
+ mpz_trace ("x", x);
+ mpz_trace ("want", want);
+ mpz_trace ("got ", got);
+ abort ();
+ }
+
+ mpz_sub (want, want, w);
+ mpz_sub (want, w, want);
+ mpz_set (got, w);
+ mpz_submul (got, x, x);
+ MPZ_CHECK_FORMAT (got);
+ if (mpz_cmp (want, got) != 0)
+ {
+ printf ("mpz_submul xx fail\n");
+ goto sqrfail;
+ }
+
+ mpz_clear (want);
+ mpz_clear (got);
+}
+
+void
check_one_ui (mpz_ptr w, mpz_ptr x, unsigned long y)
{
mpz_t want, got;
@@ -235,6 +275,9 @@ check_all (mpz_ptr w, mpz_ptr x, mpz_ptr y)
mpz_neg (y, y);
}
+
+ check_sqr (w, x);
+
mpz_neg (x, x);
}
mpz_neg (w, w);