packages feed

integer-gmp 1.0.0.1 → 1.0.1.0

raw patch · 9 files changed

+281/−126 lines, 9 filesdep ~ghc-primPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: ghc-prim

API changes (from Hackage documentation)

Files

cbits/wrappers.c view
@@ -105,7 +105,10 @@ /* Twos-complement version of 'integer_gmp_mpn_rshift' for performing  * arithmetic right shifts on "negative" MPNs.  *- * Same pre-conditions as 'integer_gmp_mpn_rshift'+ * pre-conditions:+ *  - 0 < count < sn*GMP_NUMB_BITS+ *  - rn = sn - floor((count - 1) / GMP_NUMB_BITS)+ *  - sn > 0  *  * This variant is needed to operate on MPNs interpreted as negative  * numbers, which require "rounding" towards minus infinity iff a@@ -117,7 +120,7 @@ {   const mp_size_t    limb_shift = count / GMP_NUMB_BITS;   const unsigned int bit_shift  = count % GMP_NUMB_BITS;-  const mp_size_t    rn         = sn - limb_shift;+  mp_size_t    rn         = sn - limb_shift;    // whether non-zero bits were shifted out   bool nz_shift_out = false;@@ -125,8 +128,13 @@   if (bit_shift) {     if (mpn_rshift(rp, &sp[limb_shift], rn, bit_shift))       nz_shift_out = true;-  } else+  } else {+    // rp was allocated (rn + 1) limbs, to prevent carry+    // on mpn_add_1 when all the bits of {rp, rn} are 1.+    memset(&rp[rn], 0, sizeof(mp_limb_t));     memcpy(rp, &sp[limb_shift], rn*sizeof(mp_limb_t));+    rn++;+  }    if (!nz_shift_out)     for (unsigned i = 0; i < limb_shift; i++)
changelog.md view
@@ -1,5 +1,15 @@ # Changelog for [`integer-gmp` package](http://hackage.haskell.org/package/integer-gmp) +## 1.0.1.0 *July 2017*++  * Bundled with GHC 8.2.1++  * Optimize `minusInteger`++  * Fix the right-shift operation for negative big integers (fixes GHC #12136)++  * Make operations more strict+ ## 1.0.0.1  *Feb 2016*    * Bundled with GHC 8.0.1
config.guess view
@@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name.-#   Copyright 1992-2014 Free Software Foundation, Inc.+#   Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2014-03-23'+timestamp='2017-07-19'  # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by@@ -24,12 +24,12 @@ # program.  This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). #-# Originally written by Per Bothner.+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from:-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess #-# Please send patches with a ChangeLog entry to config-patches@gnu.org.+# Please send patches to <config-patches@gnu.org>.   me=`echo "$0" | sed -e 's,.*/,,'`@@ -50,7 +50,7 @@ GNU config.guess ($timestamp)  Originally written by Per Bothner.-Copyright 1992-2014 Free Software Foundation, Inc.+Copyright 1992-2017 Free Software Foundation, Inc.  This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."@@ -168,19 +168,29 @@ 	# Note: NetBSD doesn't particularly care about the vendor 	# portion of the name.  We always set it to "unknown". 	sysctl="sysctl -n hw.machine_arch"-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \+	    /sbin/$sysctl 2>/dev/null || \+	    /usr/sbin/$sysctl 2>/dev/null || \+	    echo unknown)` 	case "${UNAME_MACHINE_ARCH}" in 	    armeb) machine=armeb-unknown ;; 	    arm*) machine=arm-unknown ;; 	    sh3el) machine=shl-unknown ;; 	    sh3eb) machine=sh-unknown ;; 	    sh5el) machine=sh5le-unknown ;;+	    earmv*)+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`+		machine=${arch}${endian}-unknown+		;; 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;; 	esac 	# The Operating System including object format, if it has switched-	# to ELF recently, or will in the future.+	# to ELF recently (or will in the future) and ABI. 	case "${UNAME_MACHINE_ARCH}" in+	    earm*)+		os=netbsdelf+		;; 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax) 		eval $set_cc_for_build 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \@@ -197,6 +207,13 @@ 		os=netbsd 		;; 	esac+	# Determine ABI tags.+	case "${UNAME_MACHINE_ARCH}" in+	    earm*)+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`+		;;+	esac 	# The OS release 	# Debian GNU/NetBSD machines have a different userland, and 	# thus, need a distinct triplet. However, they do not need@@ -207,13 +224,13 @@ 		release='-gnu' 		;; 	    *)-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` 		;; 	esac 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: 	# contains redundant information, the shorter form: 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.-	echo "${machine}-${os}${release}"+	echo "${machine}-${os}${release}${abi}" 	exit ;;     *:Bitrig:*:*) 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`@@ -223,6 +240,10 @@ 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} 	exit ;;+    *:LibertyBSD:*:*)+	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`+	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}+	exit ;;     *:ekkoBSD:*:*) 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} 	exit ;;@@ -235,6 +256,9 @@     *:MirBSD:*:*) 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} 	exit ;;+    *:Sortix:*:*)+	echo ${UNAME_MACHINE}-unknown-sortix+	exit ;;     alpha:OSF1:*:*) 	case $UNAME_RELEASE in 	*4.0)@@ -251,42 +275,42 @@ 	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1` 	case "$ALPHA_CPU_TYPE" in 	    "EV4 (21064)")-		UNAME_MACHINE="alpha" ;;+		UNAME_MACHINE=alpha ;; 	    "EV4.5 (21064)")-		UNAME_MACHINE="alpha" ;;+		UNAME_MACHINE=alpha ;; 	    "LCA4 (21066/21068)")-		UNAME_MACHINE="alpha" ;;+		UNAME_MACHINE=alpha ;; 	    "EV5 (21164)")-		UNAME_MACHINE="alphaev5" ;;+		UNAME_MACHINE=alphaev5 ;; 	    "EV5.6 (21164A)")-		UNAME_MACHINE="alphaev56" ;;+		UNAME_MACHINE=alphaev56 ;; 	    "EV5.6 (21164PC)")-		UNAME_MACHINE="alphapca56" ;;+		UNAME_MACHINE=alphapca56 ;; 	    "EV5.7 (21164PC)")-		UNAME_MACHINE="alphapca57" ;;+		UNAME_MACHINE=alphapca57 ;; 	    "EV6 (21264)")-		UNAME_MACHINE="alphaev6" ;;+		UNAME_MACHINE=alphaev6 ;; 	    "EV6.7 (21264A)")-		UNAME_MACHINE="alphaev67" ;;+		UNAME_MACHINE=alphaev67 ;; 	    "EV6.8CB (21264C)")-		UNAME_MACHINE="alphaev68" ;;+		UNAME_MACHINE=alphaev68 ;; 	    "EV6.8AL (21264B)")-		UNAME_MACHINE="alphaev68" ;;+		UNAME_MACHINE=alphaev68 ;; 	    "EV6.8CX (21264D)")-		UNAME_MACHINE="alphaev68" ;;+		UNAME_MACHINE=alphaev68 ;; 	    "EV6.9A (21264/EV69A)")-		UNAME_MACHINE="alphaev69" ;;+		UNAME_MACHINE=alphaev69 ;; 	    "EV7 (21364)")-		UNAME_MACHINE="alphaev7" ;;+		UNAME_MACHINE=alphaev7 ;; 	    "EV7.9 (21364A)")-		UNAME_MACHINE="alphaev79" ;;+		UNAME_MACHINE=alphaev79 ;; 	esac 	# A Pn.n version is a patched version. 	# A Vn.n version is a released version. 	# A Tn.n version is a released field test version. 	# A Xn.n version is an unreleased experimental baselevel. 	# 1.2 uses "1.2" for uname -r.-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` 	# Reset EXIT trap before exiting to avoid spurious non-zero exit code. 	exitcode=$? 	trap '' 0@@ -359,16 +383,16 @@ 	exit ;;     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) 	eval $set_cc_for_build-	SUN_ARCH="i386"+	SUN_ARCH=i386 	# If there is a compiler, see if it is configured for 64-bit objects. 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does. 	# This test works for both compilers.-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then+	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ 		grep IS_64BIT_ARCH >/dev/null 	    then-		SUN_ARCH="x86_64"+		SUN_ARCH=x86_64 	    fi 	fi 	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`@@ -393,7 +417,7 @@ 	exit ;;     sun*:*:4.2BSD:*) 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3+	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 	case "`/bin/arch`" in 	    sun3) 		echo m68k-sun-sunos${UNAME_RELEASE}@@ -579,8 +603,9 @@ 	else 		IBM_ARCH=powerpc 	fi-	if [ -x /usr/bin/oslevel ] ; then-		IBM_REV=`/usr/bin/oslevel`+	if [ -x /usr/bin/lslpp ] ; then+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` 	else 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} 	fi@@ -617,13 +642,13 @@ 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` 		    case "${sc_cpu_version}" in-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1+		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0+		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 		      532)                      # CPU_PA_RISC2_0 			case "${sc_kernel_bits}" in-			  32) HP_ARCH="hppa2.0n" ;;-			  64) HP_ARCH="hppa2.0w" ;;-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20+			  32) HP_ARCH=hppa2.0n ;;+			  64) HP_ARCH=hppa2.0w ;;+			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20 			esac ;; 		    esac 		fi@@ -662,11 +687,11 @@ 		    exit (0); 		} EOF-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`+		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` 		    test -z "$HP_ARCH" && HP_ARCH=hppa 		fi ;; 	esac-	if [ ${HP_ARCH} = "hppa2.0w" ]+	if [ ${HP_ARCH} = hppa2.0w ] 	then 	    eval $set_cc_for_build @@ -679,12 +704,12 @@ 	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess 	    # => hppa64-hp-hpux11.23 -	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |+	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | 		grep -q __LP64__ 	    then-		HP_ARCH="hppa2.0w"+		HP_ARCH=hppa2.0w 	    else-		HP_ARCH="hppa64"+		HP_ARCH=hppa64 	    fi 	fi 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}@@ -789,14 +814,14 @@ 	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 	exit ;;     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`+	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` 	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` 	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" 	exit ;;     5000:UNIX_System_V:4.*:*)-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` 	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" 	exit ;;     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)@@ -812,10 +837,11 @@ 	UNAME_PROCESSOR=`/usr/bin/uname -p` 	case ${UNAME_PROCESSOR} in 	    amd64)-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;-	    *)-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;+		UNAME_PROCESSOR=x86_64 ;;+	    i386)+		UNAME_PROCESSOR=i586 ;; 	esac+	echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` 	exit ;;     i*:CYGWIN*:*) 	echo ${UNAME_MACHINE}-pc-cygwin@@ -878,7 +904,7 @@ 	exit ;;     *:GNU/*:*:*) 	# other systems with GNU libc and userland-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} 	exit ;;     i*86:Minix:*:*) 	echo ${UNAME_MACHINE}-pc-minix@@ -901,7 +927,7 @@ 	  EV68*) UNAME_MACHINE=alphaev68 ;; 	esac 	objdump --private-headers /bin/sh | grep -q ld.so.1-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi+	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 	exit ;;     arc:Linux:*:* | arceb:Linux:*:*)@@ -932,6 +958,9 @@     crisv32:Linux:*:*) 	echo ${UNAME_MACHINE}-axis-linux-${LIBC} 	exit ;;+    e2k:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}+	exit ;;     frv:Linux:*:*) 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 	exit ;;@@ -944,6 +973,9 @@     ia64:Linux:*:*) 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 	exit ;;+    k1om:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}+	exit ;;     m32r*:Linux:*:*) 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 	exit ;;@@ -969,6 +1001,9 @@ 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } 	;;+    mips64el:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}+	exit ;;     openrisc*:Linux:*:*) 	echo or1k-unknown-linux-${LIBC} 	exit ;;@@ -1001,6 +1036,9 @@     ppcle:Linux:*:*) 	echo powerpcle-unknown-linux-${LIBC} 	exit ;;+    riscv32:Linux:*:* | riscv64:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}+	exit ;;     s390:Linux:*:* | s390x:Linux:*:*) 	echo ${UNAME_MACHINE}-ibm-linux-${LIBC} 	exit ;;@@ -1020,7 +1058,7 @@ 	echo ${UNAME_MACHINE}-dec-linux-${LIBC} 	exit ;;     x86_64:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}+	echo ${UNAME_MACHINE}-pc-linux-${LIBC} 	exit ;;     xtensa*:Linux:*:*) 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}@@ -1099,7 +1137,7 @@ 	# uname -m prints for DJGPP always 'pc', but it prints nothing about 	# the processor, so we play safe by assuming i586. 	# Note: whatever this is, it MUST be the same as what config.sub-	# prints for the "djgpp" host, or else GDB configury will decide that+	# prints for the "djgpp" host, or else GDB configure will decide that 	# this is a cross-build. 	echo i586-pc-msdosdjgpp 	exit ;;@@ -1248,6 +1286,9 @@     SX-8R:SUPER-UX:*:*) 	echo sx8r-nec-superux${UNAME_RELEASE} 	exit ;;+    SX-ACE:SUPER-UX:*:*)+	echo sxace-nec-superux${UNAME_RELEASE}+	exit ;;     Power*:Rhapsody:*:*) 	echo powerpc-apple-rhapsody${UNAME_RELEASE} 	exit ;;@@ -1261,16 +1302,23 @@ 	    UNAME_PROCESSOR=powerpc 	fi 	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then-	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then+	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then 		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \-		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \-		    grep IS_64BIT_ARCH >/dev/null+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \+		       grep IS_64BIT_ARCH >/dev/null 		then 		    case $UNAME_PROCESSOR in 			i386) UNAME_PROCESSOR=x86_64 ;; 			powerpc) UNAME_PROCESSOR=powerpc64 ;; 		    esac 		fi+		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc+		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \+		       grep IS_PPC >/dev/null+		then+		    UNAME_PROCESSOR=powerpc+		fi 	    fi 	elif test "$UNAME_PROCESSOR" = i386 ; then 	    # Avoid executing cc on OS X 10.9, as it ships with a stub@@ -1285,7 +1333,7 @@ 	exit ;;     *:procnto*:*:* | *:QNX:[0123456789]*:*) 	UNAME_PROCESSOR=`uname -p`-	if test "$UNAME_PROCESSOR" = "x86"; then+	if test "$UNAME_PROCESSOR" = x86; then 		UNAME_PROCESSOR=i386 		UNAME_MACHINE=pc 	fi@@ -1294,15 +1342,18 @@     *:QNX:*:4*) 	echo i386-pc-qnx 	exit ;;-    NEO-?:NONSTOP_KERNEL:*:*)+    NEO-*:NONSTOP_KERNEL:*:*) 	echo neo-tandem-nsk${UNAME_RELEASE} 	exit ;;     NSE-*:NONSTOP_KERNEL:*:*) 	echo nse-tandem-nsk${UNAME_RELEASE} 	exit ;;-    NSR-?:NONSTOP_KERNEL:*:*)+    NSR-*:NONSTOP_KERNEL:*:*) 	echo nsr-tandem-nsk${UNAME_RELEASE} 	exit ;;+    NSX-*:NONSTOP_KERNEL:*:*)+	echo nsx-tandem-nsk${UNAME_RELEASE}+	exit ;;     *:NonStop-UX:*:*) 	echo mips-compaq-nonstopux 	exit ;;@@ -1316,7 +1367,7 @@ 	# "uname -m" is not consistent, so use $cputype instead. 386 	# is converted to i386 for consistency with other x86 	# operating systems.-	if test "$cputype" = "386"; then+	if test "$cputype" = 386; then 	    UNAME_MACHINE=i386 	else 	    UNAME_MACHINE="$cputype"@@ -1358,7 +1409,7 @@ 	echo i386-pc-xenix 	exit ;;     i*86:skyos:*:*)-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` 	exit ;;     i*86:rdos:*:*) 	echo ${UNAME_MACHINE}-pc-rdos@@ -1369,23 +1420,25 @@     x86_64:VMkernel:*:*) 	echo ${UNAME_MACHINE}-unknown-esx 	exit ;;+    amd64:Isilon\ OneFS:*:*)+	echo x86_64-unknown-onefs+	exit ;; esac  cat >&2 <<EOF $0: unable to guess system type -This script, last modified $timestamp, has failed to recognize-the operating system you are using. It is advised that you-download the most up to date version of the config scripts from+This script (version $timestamp), has failed to recognize the+operating system you are using. If your script is old, overwrite *all*+copies of config.guess and config.sub with the latest versions from: -  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess and-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub -If the version you run ($0) is already up to date, please-send the following data and any information you think might be-pertinent to <config-patches@gnu.org> in order to provide the needed-information to handle your system.+If $0 has already been updated, send the following data and any+information you think might be pertinent to config-patches@gnu.org to+provide the necessary information to handle your system.  config.guess timestamp = $timestamp 
config.sub view
@@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script.-#   Copyright 1992-2014 Free Software Foundation, Inc.+#   Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2014-05-01'+timestamp='2017-04-02'  # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by@@ -25,7 +25,7 @@ # of the GNU General Public License, version 3 ("GPLv3").  -# Please send patches with a ChangeLog entry to config-patches@gnu.org.+# Please send patches to <config-patches@gnu.org>. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument.@@ -33,7 +33,7 @@ # Otherwise, we print the canonical config type on stdout and succeed.  # You can get the latest version of this script from:-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub  # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases@@ -53,8 +53,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`  usage="\-Usage: $0 [OPTION] CPU-MFR-OPSYS-       $0 [OPTION] ALIAS+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS  Canonicalize a configuration name. @@ -68,7 +67,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2014 Free Software Foundation, Inc.+Copyright 1992-2017 Free Software Foundation, Inc.  This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."@@ -117,8 +116,8 @@ case $maybe_os in   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \-  knetbsd*-gnu* | netbsd*-gnu* | \-  kopensolaris*-gnu* | \+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \+  kopensolaris*-gnu* | cloudabi*-eabi* | \   storm-chaos* | os2-emx* | rtmk-nova*)     os=-$maybe_os     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`@@ -255,15 +254,16 @@ 	| arc | arceb \ 	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ 	| avr | avr32 \+	| ba \ 	| be32 | be64 \ 	| bfin \ 	| c4x | c8051 | clipper \ 	| d10v | d30v | dlx | dsp16xx \-	| epiphany \-	| fido | fr30 | frv \+	| e2k | epiphany \+	| fido | fr30 | frv | ft32 \ 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 	| hexagon \-	| i370 | i860 | i960 | ia64 \+	| i370 | i860 | i960 | ia16 | ia64 \ 	| ip2k | iq2000 \ 	| k1om \ 	| le32 | le64 \@@ -301,10 +301,12 @@ 	| open8 | or1k | or1knd | or32 \ 	| pdp10 | pdp11 | pj | pjl \ 	| powerpc | powerpc64 | powerpc64le | powerpcle \+	| pru \ 	| pyramid \+	| riscv32 | riscv64 \ 	| rl78 | rx \ 	| score \-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ 	| sh64 | sh64le \ 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \@@ -312,6 +314,8 @@ 	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ 	| ubicom32 \ 	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \+	| visium \+	| wasm32 \ 	| we32k \ 	| x86 | xc16x | xstormy16 | xtensa \ 	| z8k | z80)@@ -326,6 +330,9 @@ 	c6x) 		basic_machine=tic6x-unknown 		;;+	leon|leon[3-9])+		basic_machine=sparc-$basic_machine+		;; 	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) 		basic_machine=$basic_machine-unknown 		os=-none@@ -371,17 +378,18 @@ 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \ 	| avr-* | avr32-* \+	| ba-* \ 	| be32-* | be64-* \ 	| bfin-* | bs2000-* \ 	| c[123]* | c30-* | [cjt]90-* | c4x-* \ 	| c8051-* | clipper-* | craynv-* | cydra-* \ 	| d10v-* | d30v-* | dlx-* \-	| elxsi-* \+	| e2k-* | elxsi-* \ 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ 	| h8300-* | h8500-* \ 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ 	| hexagon-* \-	| i*86-* | i860-* | i960-* | ia64-* \+	| i*86-* | i860-* | i960-* | ia16-* | ia64-* \ 	| ip2k-* | iq2000-* \ 	| k1om-* \ 	| le32-* | le64-* \@@ -422,13 +430,15 @@ 	| orion-* \ 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \+	| pru-* \ 	| pyramid-* \+	| riscv32-* | riscv64-* \ 	| rl78-* | romp-* | rs6000-* | rx-* \ 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ 	| sparclite-* \-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ 	| tahoe-* \ 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ 	| tile*-* \@@ -436,6 +446,8 @@ 	| ubicom32-* \ 	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ 	| vax-* \+	| visium-* \+	| wasm32-* \ 	| we32k-* \ 	| x86-* | x86_64-* | xc16x-* | xps100-* \ 	| xstormy16-* | xtensa*-* \@@ -512,6 +524,9 @@ 		basic_machine=i386-pc 		os=-aros 		;;+	asmjs)+		basic_machine=asmjs-unknown+		;; 	aux) 		basic_machine=m68k-apple 		os=-aux@@ -632,6 +647,14 @@ 		basic_machine=m68k-bull 		os=-sysv3 		;;+	e500v[12])+		basic_machine=powerpc-unknown+		os=$os"spe"+		;;+	e500v[12]-*)+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`+		os=$os"spe"+		;; 	ebmon29k) 		basic_machine=a29k-amd 		os=-ebmon@@ -773,6 +796,9 @@ 		basic_machine=m68k-isi 		os=-sysv 		;;+	leon-*|leon[3-9]-*)+		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`+		;; 	m68knommu) 		basic_machine=m68k-unknown 		os=-linux@@ -828,6 +854,10 @@ 		basic_machine=powerpc-unknown 		os=-morphos 		;;+	moxiebox)+		basic_machine=moxie-unknown+		os=-moxiebox+		;; 	msdos) 		basic_machine=i386-pc 		os=-msdos@@ -920,6 +950,9 @@ 	nsr-tandem) 		basic_machine=nsr-tandem 		;;+	nsx-tandem)+		basic_machine=nsx-tandem+		;; 	op50n-* | op60c-*) 		basic_machine=hppa1.1-oki 		os=-proelf@@ -1004,7 +1037,7 @@ 	ppc-* | ppcbe-*) 		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` 		;;-	ppcle | powerpclittle | ppc-le | powerpc-little)+	ppcle | powerpclittle) 		basic_machine=powerpcle-unknown 		;; 	ppcle-* | powerpclittle-*)@@ -1014,7 +1047,7 @@ 		;; 	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` 		;;-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)+	ppc64le | powerpc64little) 		basic_machine=powerpc64le-unknown 		;; 	ppc64le-* | powerpc64little-*)@@ -1215,6 +1248,9 @@ 		basic_machine=a29k-wrs 		os=-vxworks 		;;+	wasm32)+		basic_machine=wasm32-unknown+		;; 	w65*) 		basic_machine=w65-wdc 		os=-none@@ -1360,27 +1396,28 @@ 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ 	      | -sym* | -kopensolaris* | -plan9* \ 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \-	      | -aos* | -aros* \+	      | -aos* | -aros* | -cloudabi* | -sortix* \ 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \-	      | -bitrig* | -openbsd* | -solidbsd* \+	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \-	      | -chorusos* | -chorusrdb* | -cegcc* \+	      | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \-	      | -uxpv* | -beos* | -mpeix* | -udk* \+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \+	      | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) 	# Remember, each alternative MUST END IN *, to match a version number. 		;; 	-qnx*)@@ -1512,6 +1549,8 @@ 		;; 	-nacl*) 		;;+	-ios)+		;; 	-none) 		;; 	*)@@ -1606,6 +1645,9 @@ 		;; 	sparc-* | *-sun) 		os=-sunos4.1.1+		;;+	pru-*)+		os=-elf 		;; 	*-be) 		os=-beos
integer-gmp.cabal view
@@ -1,5 +1,7 @@+cabal-version:       2.0 name:                integer-gmp-version:             1.0.0.1+version:             1.0.1.0+ synopsis:            Integer library based on GMP license:             BSD3 license-file:        LICENSE@@ -7,7 +9,14 @@ maintainer:          hvr@gnu.org category:            Numeric, Algebra build-type:          Configure-cabal-version:       >=1.10+description:+    This package provides the low-level implementation of the standard+    'Integer' type based on the+    <http://gmplib.org/ GNU Multiple Precision Arithmetic Library (GMP)>.+    .+    This package provides access to the internal representation of+    'Integer' as well as primitive operations with no proper error+    handling, and should only be used directly with the utmost care.  extra-source-files:     aclocal.m4@@ -46,7 +55,7 @@     StandaloneDeriving     UnboxedTuples     UnliftedFFITypes-  build-depends:       ghc-prim+  build-depends:       ghc-prim ^>= 0.5.1.0   hs-source-dirs:      src/   ghc-options: -this-unit-id integer-gmp -Wall   cc-options: -std=c99 -Wall
src/GHC/Integer.hs view
@@ -49,7 +49,7 @@     eqInteger,  neqInteger,  leInteger,  gtInteger,  ltInteger,  geInteger,     compareInteger, -    -- ** 'Int#'-boolean valued versions of comparision predicates+    -- ** 'Int#'-boolean valued versions of comparison predicates     --     -- | These operations return @0#@ and @1#@ instead of 'False' and     -- 'True' respectively.  See
src/GHC/Integer/GMP/Internals.hs view
@@ -112,7 +112,7 @@     , orBigNat     , bitBigNat -      -- ** 'BigNat' comparision predicates+      -- ** 'BigNat' comparison predicates     , isZeroBigNat     , isNullBigNat# 
src/GHC/Integer/Logarithms.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UnliftedFFITypes #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE BangPatterns #-}  module GHC.Integer.Logarithms     ( wordLog2#@@ -43,7 +44,7 @@ integerLogBase# (S# 2#) m = integerLog2# m integerLogBase# b m = e'   where-    (# _, e' #) = go b+    !(# _, e' #) = go b      go pw | m `ltInteger` pw = (# m, 0# #)     go pw = case go (sqrInteger pw) of
src/GHC/Integer/Type.hs view
@@ -418,10 +418,42 @@       GT -> bigNatToInteger (minusBigNat x y) {-# CONSTANT_FOLDED plusInteger #-} --- TODO--- | Subtract two 'Integer's from each other.+-- | Subtract one 'Integer' from another. minusInteger :: Integer -> Integer -> Integer-minusInteger x y = inline plusInteger x (inline negateInteger y)+minusInteger x       (S# 0#)            = x+minusInteger (S# x#) (S# y#)+  = case subIntC# x# y# of+    (# z#, 0# #) -> S# z#+    (# 0#, _  #) -> Jn# (wordToBigNat2 1## 0##)+    (# z#, _  #)+      | isTrue# (z# ># 0#) -> Jn# (wordToBigNat ( (int2Word# (negateInt# z#))))+      | True               -> Jp# (wordToBigNat ( (int2Word# z#)))+minusInteger (S# x#) (Jp# y)+  | isTrue# (x# >=# 0#) = bigNatToNegInteger (minusBigNatWord y (int2Word# x#))+  | True                = Jn# (plusBigNatWord y (int2Word# (negateInt# x#)))+minusInteger (S# x#) (Jn# y)+  | isTrue# (x# >=# 0#) = Jp# (plusBigNatWord y (int2Word# x#))+  | True                = bigNatToInteger (minusBigNatWord y (int2Word#+                                                              (negateInt# x#)))+minusInteger (Jp# x) (Jp# y)+    = case compareBigNat x y of+      LT -> bigNatToNegInteger (minusBigNat y x)+      EQ -> S# 0#+      GT -> bigNatToInteger (minusBigNat x y)+minusInteger (Jp# x) (Jn# y) = Jp# (plusBigNat x y)+minusInteger (Jn# x) (Jp# y) = Jn# (plusBigNat x y)+minusInteger (Jn# x) (Jn# y)+    = case compareBigNat x y of+      LT -> bigNatToInteger (minusBigNat y x)+      EQ -> S# 0#+      GT -> bigNatToNegInteger (minusBigNat x y)+minusInteger (Jp# x) (S# y#)+  | isTrue# (y# >=# 0#) = bigNatToInteger (minusBigNatWord x (int2Word# y#))+  | True                = Jp# (plusBigNatWord x (int2Word# (negateInt# y#)))+minusInteger (Jn# x) (S# y#)+  | isTrue# (y# >=# 0#) = Jn# (plusBigNatWord x (int2Word# y#))+  | True                = bigNatToNegInteger (minusBigNatWord x+                                              (int2Word# (negateInt# y#))) {-# CONSTANT_FOLDED minusInteger #-}  -- | Multiply two 'Integer's@@ -728,7 +760,7 @@        in (# q', r' #)   | True = qr   where-    qr@(# q, r #) = quotRemInteger n d+    !qr@(# q, r #) = quotRemInteger n d {-# CONSTANT_FOLDED divModInteger #-}  divInteger :: Integer -> Integer -> Integer@@ -1002,7 +1034,7 @@ timesBigNatWord x 1## = x timesBigNatWord x@(BN# x#) y#   | isTrue# (nx# ==# 1#) =-      let (# !h#, !l# #) = timesWord2# (bigNatToWord x) y#+      let !(# !h#, !l# #) = timesWord2# (bigNatToWord x) y#       in wordToBigNat2 h# l#   | True = runS $ do         mbn@(MBN# mba#) <- newBigNat# nx#@@ -1032,7 +1064,7 @@       _ <- svoid (writeBigNat# mbn li# (uncheckedShiftL# 1## bi#))       unsafeFreezeBigNat# mbn   where-    (# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#+    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#  testBitBigNat :: BigNat -> Int# -> Bool testBitBigNat bn i#@@ -1040,7 +1072,7 @@   | isTrue# (li# <# nx#) = isTrue# (testBitWord# (indexBigNat# bn li#) bi#)   | True                 = False   where-    (# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#+    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#     nx# = sizeofBigNat# bn  testBitNegBigNat :: BigNat -> Int# -> Bool@@ -1051,7 +1083,7 @@                          (indexBigNat# bn li# `minusWord#` 1##) bi#) ==# 0#)   | True     = isTrue# ((testBitWord# (indexBigNat# bn li#) bi#) ==# 0#)   where-    (# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#+    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#     nx# = sizeofBigNat# bn      allZ 0# = True@@ -1074,7 +1106,7 @@   where     xn# = sizeofBigNat# x     yn# = xn# +# nlimbs# +# (nbits# /=# 0#)-    (# nlimbs#, nbits# #) = quotRemInt# n# GMP_LIMB_BITS#+    !(# nlimbs#, nbits# #) = quotRemInt# n# GMP_LIMB_BITS#   @@ -1108,7 +1140,7 @@   where     xn# = sizeofBigNat# x     yn# = xn# -# nlimbs#-    nlimbs# = quotInt# n# GMP_LIMB_BITS#+    nlimbs# = quotInt# (n# -# 1#) GMP_LIMB_BITS#   orBigNat :: BigNat -> BigNat -> BigNat@@ -1659,7 +1691,7 @@         (# s'', mba# #) -> (# s'', MBN# mba# #)   where     bsz# = nsz# `uncheckedIShiftL#` GMP_LIMB_SHIFT#-    (# s', n# #) = getSizeofMutableByteArray# mba0# s+    !(# s', n# #) = getSizeofMutableByteArray# mba0# s  shrinkMutBigNat# :: MutBigNat s -> GmpSize# -> State# s -> State# s shrinkMutBigNat# (MBN# mba0#) nsz# s@@ -1667,13 +1699,13 @@   | True                  = shrinkMutableByteArray# mba0# bsz# s'   where     bsz# = nsz# `uncheckedIShiftL#` GMP_LIMB_SHIFT#-    (# s', n# #) = getSizeofMutableByteArray# mba0# s+    !(# s', n# #) = getSizeofMutableByteArray# mba0# s  unsafeSnocFreezeBigNat# :: MutBigNat s -> GmpLimb# -> S s BigNat unsafeSnocFreezeBigNat# mbn0@(MBN# mba0#) limb# s = go s'   where     n#   = nb0# `uncheckedIShiftRL#` GMP_LIMB_SHIFT#-    (# s', nb0# #) = getSizeofMutableByteArray# mba0# s+    !(# s', nb0# #) = getSizeofMutableByteArray# mba0# s     go = do         (MBN# mba#) <- resizeMutBigNat# mbn0 (n# +# 1#)         _ <- svoid (writeWordArray# mba# n# limb#)@@ -1687,8 +1719,8 @@   | isTrue# (n#  ==# n0#) = (unsafeFreezeBigNat# mbn) s''   | True                  = (unsafeShrinkFreezeBigNat# mbn n#) s''   where-    (# s', n0# #) = getSizeofMutBigNat# mbn s-    (# s'', n# #) = normSizeofMutBigNat'# mbn n0# s'+    !(# s', n0# #) = getSizeofMutBigNat# mbn s+    !(# s'', n# #) = normSizeofMutBigNat'# mbn n0# s'  -- | Shrink MBN unsafeShrinkFreezeBigNat# :: MutBigNat s -> GmpSize# -> S s BigNat@@ -1718,7 +1750,7 @@ normSizeofMutBigNat# :: MutBigNat s -> State# s -> (# State# s, Int# #) normSizeofMutBigNat# mbn@(MBN# mba) s = normSizeofMutBigNat'# mbn sz# s'   where-    (# s', n# #) = getSizeofMutableByteArray# mba s+    !(# s', n# #) = getSizeofMutableByteArray# mba s     sz# = n# `uncheckedIShiftRA#` GMP_LIMB_SHIFT#  -- | Find most-significant non-zero limb and return its index-position@@ -1749,17 +1781,17 @@   | isTrue# (baszr# ==# 0#) -- i.e. ba# is multiple of limb-size   , isTrue# (baszq# ==# n#) = (BN# ba#)   | True = runS $ \s ->-      let (# s', mbn@(MBN# mba#) #) = newBigNat# n# s-          (# s'', ba_sz# #) = getSizeofMutableByteArray# mba# s'+      let !(# s', mbn@(MBN# mba#) #) = newBigNat# n# s+          !(# s'', ba_sz# #) = getSizeofMutableByteArray# mba# s'           go = do _ <- svoid (copyByteArray# ba# 0# mba# 0# ba_sz# )                   unsafeFreezeBigNat# mbn       in go s''   where-    (# baszq#, baszr# #) = quotRemInt# (sizeofByteArray# ba#) GMP_LIMB_BYTES#+    !(# baszq#, baszr# #) = quotRemInt# (sizeofByteArray# ba#) GMP_LIMB_BYTES#      n#  = fmssl (n0# -# 1#) -    -- find most signifcant set limb, return normalized size+    -- find most significant set limb, return normalized size     fmssl i#       | isTrue# (i# <# 0#)                             = 0#       | isTrue# (neWord# (indexWordArray# ba# i#) 0##) = i# +# 1#@@ -1880,7 +1912,7 @@      sz# = sizeofByteArray# ba# -    (# szq#, szr# #) = quotRemInt# sz# GMP_LIMB_BYTES#+    !(# szq#, szr# #) = quotRemInt# sz# GMP_LIMB_BYTES#  -- | Version of 'nextPrimeInteger' operating on 'BigNat's --