GNU bug report logs - #59636
prime [ factor ] utility very slow in factoring the square of a prime

Previous Next

Package: coreutils;

Reported by: "Jason C. Kwan" <jasonckwan <at> yahoo.com>

Date: Sun, 27 Nov 2022 17:01:02 UTC

Severity: normal

To reply to this bug, email your comments to 59636 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-coreutils <at> gnu.org:
bug#59636; Package coreutils. (Sun, 27 Nov 2022 17:01:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Jason C. Kwan" <jasonckwan <at> yahoo.com>:
New bug report received and forwarded. Copy sent to bug-coreutils <at> gnu.org. (Sun, 27 Nov 2022 17:01:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "Jason C. Kwan" <jasonckwan <at> yahoo.com>
To: bug-coreutils <at> gnu.org
Subject: prime [ factor ] utility very slow in factoring the square of a prime
Date: Sun, 27 Nov 2022 14:48:16 +0000 (UTC)
[Message part 1 (text/plain, inline)]
The test case is 
      49,456,902,806,087,647,575,555,655,201
a prime that is approx. 95.3-bits in size, plus the direct squaring of it, ascalculated by gnu-bc 
    (see full text below for host system info,      versioning details, and command line      statements used to perform this test. 
      xargs used is macOS 12.6 built-in one instead of GNU one)
The base prime has a hex representation is 
      0x 9FCD CA89 5696 76C0 0B03 4621

The issue being that while it took the [ factor ] utility just shy of 4.8ms to complete its primality checks, and confirmed the first input is indeed prime, 
attempting to factor the direct squaring of the same prime resultedin the task being timed out after 1200 seconds, or 20 minutes.
Perhaps there is an opportunity to optimize it by    
   - performing a quick square/square-root check for large inputs   

     (e.g. >= 2^127, per "info factor") 
before routing it to what "info factor" refers to as "the slower algorithm" ?
Maybe also add one more cube/cube-root quick check if the relative cost to system resources isn't particularly material ?

RegardsJason

% uname -mrsv 
      Darwin 21.6.0 Darwin Kernel Version 21.6.0:       Mon Aug 22 20:19:52 PDT 2022; 
      root:xnu-  8020.140.49~2/RELEASE_ARM64_T6000 arm64
% gdate  gfactor --version       bc --version

      Sun Nov 27 03:34:47 EST 2022
---------------------------------------------
factor (GNU coreutils) 9.1Copyright (C) 2022 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.
---------------------------------------------
Written by Paul Rubin, Torbjörn Granlund, and Niels Möller.bc 1.06Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
---------------------------------------------
  echo ' x = 49456902806087647575555655201 ; x^1 ; x^2 ; ' |   bc                                                       |   xargs -t -n 1 -P 2 timeout --foreground 1200 gfactor     | 
  awk '  function ep16(__,_,___) {       return substr("",        (___ = RS) * (RS = "\n") * \           ( (__ = " gdate +\"%s%6N\" ") | getline _),        close( __) ^ (RS = ___))_   }
  function timer(_,__) {       return \      +_ < (__= ep16())^(_<_) \      ?   __\      : (__-_) /\        ( ( (_+=_^=_<_)+_*_*_)^(_ +_+  _)*\            ( _++^!++_ +    _^-(_ +_+--_) ) )  }  BEGIN {  __ = timer(_ = _<_)        OFMT = "%.25g"     CONVFMT = "%.250g"          _^=_  }  ($++NF = sprintf("%.13f", timer(__)))^!_ +\     ($++NF =        log( $_ ) / log(_+_))^!_' 
---------------------------------------------
timeout --foreground 1200 gfactor 49456902806087647575555655201timeout --foreground 1200 gfactor 2445985235170800228886882843536511572299116327852398350401
49456902806087647575555655201: 49456902806087647575555655201 0.0047909999999 95.320158551927676171544590033590793609619140625

[Message part 2 (text/html, inline)]

This bug report was last modified 1 year and 362 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.