CARVIEW |
Select Language
HTTP/2 200
date: Wed, 30 Jul 2025 20:20:55 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"ad809139ce93c08dca9e4411f030cc49"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=O7V3kAuToGmUFvnbpiHbfmF6a1TTgRROTXIK94HH3%2FH1euw1GG5Cmv5W7QhO%2BolCqtusjqQNIWW7O1fh%2B1%2F49LMl%2FyAufpmYWGTUm4v1lYBwRol7KYZ0EXjFiBrITLMVHXD7BPwa8JnJMw%2BeVumTylArT36X0Et8vYyLcxBehYOtPi7%2BwkCKAjihRmxfMEL8MO%2F8S9dQasJOM63VWAgzqCBRZSwSj3FSc3SHXanH%2BPiFPHlAZTmXVMFIkXmexs2ZCbEab5TSewolveylyAWeQA%3D%3D--nmUrpi1H87GSF72R--q3Rthb3sr%2BI3rQxw%2BfnB7A%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1385058291.1753906854; Path=/; Domain=github.com; Expires=Thu, 30 Jul 2026 20:20:54 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 30 Jul 2026 20:20:54 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: EB5E:A418B:A24C0:D45FB:688A7EA6
GitHub - bbuhrow/yafu: Automated integer factorization
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 39
bbuhrow/yafu
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
------------------------------------------------------------------------------- OVERVIEW ------------------------------------------------------------------------------- YAFU (with assistance from other free software) uses the most powerful modern algorithms (and implementations of them) to factor input integers in a completely automated way. The automation within YAFU is state-of-the-art, combining factorization algorithms in an intelligent and adaptive methodology that minimizes the time to find the factors of arbitrary input integers. YAFU has been referenced several times in the academic literature. If you have academic work that requires integer factorization, YAFU might be able to help. YAFU is most optimized for general inputs up to 160 digits in size, although there is support for inputs much larger than that, if they have a special form. There are also specialized functions for handling lists of inputs and ranges of contiguous smaller inputs. YAFU is primarily a command-line driven tool. You provide the number to factor and, via screen output and log files, YAFU will provide you the factors. But that's not all! You also get an interactive environment similar to MATLAB or PARI/GP, where you can type commands and store results. The functionality of this interface is limited, but perhaps useful, and I have plans to make it better. YAFU also provides a vast amount of flexibility, through many many options and a very capable expression interpreter. If you know what you are doing, or if you read the documentation enough, you can customize the operation of YAFU a great deal. You should have received a copy of docfile.txt, which explains in some detail all of the available functions, how to use them, and how to influence their behavior. A community of factorization enthusiasts can be found at mersenneforum.org, many of whom are willing and able to answer questions. ------------------------------------------------------------------------------- INSTALLATION ------------------------------------------------------------------------------- No installation necessary, just put the binary in whatever location you like and run it. Files that YAFU generates are placed alonside the binary, and directories/files that YAFU needs are with respect to the binary location (such as the ggnfs sievers, see below) Please note that the windows executable provided here contains the most basic implementation of many of the factorization algorithms, in order to run on the largest number of processors. If you want to enhance yafu's performance for your processor, you will have to build your own copy from source. This can be done with free tools for Windows or Linux operating systems. See below for build information. More detailed guides can be found online at mersenneforum.org. Support and an active user community can be found here: https://www.mersenneforum.org/node/58 ------------------------------------------------------------------------------- BUILD INFORMATION ------------------------------------------------------------------------------- Pre-compiled binaries are provided for windows. However, anyone is welcome to compile from source for your own system. If you can make a binary which beats the performance of one of the pre-compiled versions for a particular architecture, I'd love to hear about it! Linux 64 bit OS (including Windows Subsystem for Linux, WSL) ============= make yafu [USE_SSE41=1] [USE_AVX2=1] [USE_BMI2=1] [SKYLAKEX=1] [ICELAKE=1] [VBITS=64/128/256/512] I've built and tested with gcc, icc, and a couple versions of clang As of version 3.0 YAFU now only requires GMP and GMP-ECM as dependencies. Ytools, ysieve, and msieve are now included into the project locally and built as needed during make. gmp (https://gmplib.org/) gmp-ecm (https://ecm.gforge.inria.fr/) Here are some terse notes on how to build these dependencies prior to yafu. Specific arguments to "make" in some cases could change depending on your system. GMP ./configure --prefix="/path/to/a/gmp/install/location/" make make install GMP-ECM autoreconf -i ./configure --prefix="/path/to/a/ecm/install/location/" --with-gmp="/path/to/a/gmp/install/location/" make make install YAFU edit makefile to add the following to CFLAGS: -I/path/to/a/gmp/install/location/include/ -L/path/to/a/gmp/install/location/lib -I/path/to/a/ecm/install/location/include/ -L/path/to/a/ecm/install/location/lib make yafu [USE_SSE41=1] [USE_AVX2=1] [USE_BMI2=1] [SKYLAKEX=1] [ICELAKE=1] [VBITS=64/128/256/512] Some support can be had here: https://www.mersenneforum.org/forumdisplay.php?f=96 If your computer supports them, yafu can make use of several modern instruction set extensions, including SSE41, AVX2, and AVX512 (various extensions). SKYLAKEX will add support for AVX512F and AVX512BW. ICELAKE will add support for AVX512F, AVX512BW, and AVX512IFMA. Primarily these are used in SIQS. If you have AVX512 on your cpu, yafu will also use AVX-ECM as the default ECM implementation. For a standalone version of AVX-ECM, please refer to: https://github.com/bbuhrow/avx-ecm WINDOWS MS Visual Studio ============= Build files are available for Microsoft visual studio, available for free online. You will need several other visual studio projects installed and built before attempting to build yafu. As of yafu version 3.0 (Jan 2025) I get these from these locations: mpir: https://github.com/BrianGladman/mpir ecm: https://gitlab.inria.fr/zimmerma/ecm/-/releases or https://github.com/sethtroisi/gmp-ecm pthreads: https://github.com/BrianGladman/pthreads These all come with MSVC build files that should work. To configure yafu once its dependencies are built, use the libs_and_extensions.props file in the build.vc22 directory. Here you can supply directories to the builds, relative to yafu's project directories (e.g., build.vc22\ecm) A little farther down in the libs_and_extensions.props file, edit the PreprocessorDefinitions line with any instruction set extensions you want to enable for yafu's build. I have also had success installing and using the free Intel compiler inside visual studio 2022. MINGW-64 ============= YAFU might build in mingw-64 environment. I haven't tried in a long time; good luck. If you get this to work, please let me know. OTHER ============= If you build yafu on other platforms or using other IDE's or compilers, please let me know about it. ------------------------------------------------------------------------------- HELP INFORMATION ------------------------------------------------------------------------------- Detailed documentation is available in docfile.txt, which can be viewed during an interactive YAFU session by typing 'help'. The default yafu.ini also contains descriptions of available options. If you want to see the docfile from within the program, it needs to be in the same directory as the executable. Check back at https://github.com/bbuhrow/yafu for updates. --------------------------------------------------------------- MISC INFORMATION --------------------------------------------------------------- Here's a fun test case for factor(), which uses many of the algorithms in yafu factor(2056802480868100646375721251575555494408897387375737955882170045672576386016591560879707933101909539325829251496440620798637813) neat example for ecm: 140870298550359924914704160737419905257747544866892632000062896476968602578482966342704
About
Automated integer factorization
Resources
Stars
Watchers
Forks
Sponsor this project
Packages 0
No packages published
You can’t perform that action at this time.