summaryrefslogtreecommitdiff
path: root/mpz/sqrt.c
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2001-06-20 01:38:52 +0200
committerKevin Ryde <user42@zip.com.au>2001-06-20 01:38:52 +0200
commitcf246f0cc2722d43b8a7e640124dbfbe7dff8d4b (patch)
treee80208fc6a46ca090c99bec43ab9a388b9b813d9 /mpz/sqrt.c
parent0fccba5f77c94613083a9aefb86b3bafcd1533e3 (diff)
downloadgmp-cf246f0cc2722d43b8a7e640124dbfbe7dff8d4b.tar.gz
* mpz/sqrt.c: Special case for op==0, to avoid TMP_ALLOC(0).
Diffstat (limited to 'mpz/sqrt.c')
-rw-r--r--mpz/sqrt.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/mpz/sqrt.c b/mpz/sqrt.c
index 37c25146b..dfe0392ed 100644
--- a/mpz/sqrt.c
+++ b/mpz/sqrt.c
@@ -34,8 +34,13 @@ mpz_sqrt (mpz_ptr root, mpz_srcptr op)
TMP_MARK (marker);
op_size = op->_mp_size;
- if (op_size < 0)
- SQRT_OF_NEGATIVE;
+ if (op_size <= 0)
+ {
+ if (op_size < 0)
+ SQRT_OF_NEGATIVE;
+ SIZ(root) = 0;
+ return;
+ }
/* The size of the root is accurate after this simple calculation. */
root_size = (op_size + 1) / 2;