{"id":15901545,"url":"https://github.com/wjcunningham7/fastmath","last_synced_at":"2025-03-20T19:30:42.023Z","repository":{"id":17280777,"uuid":"20050858","full_name":"wjcunningham7/fastmath","owner":"wjcunningham7","description":"Numerical approximations and efficient data structures","archived":false,"fork":false,"pushed_at":"2024-01-02T16:44:09.000Z","size":36518,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-03-01T00:38:26.299Z","etag":null,"topics":["assembly-language","bitset","cpp","hypergeometric-function","numerical-methods"],"latest_commit_sha":null,"homepage":"https://willcunningham.net","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wjcunningham7.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-05-22T06:49:36.000Z","updated_at":"2022-05-08T03:28:10.000Z","dependencies_parsed_at":"2024-10-28T06:53:09.755Z","dependency_job_id":"1f6d6d0e-f62d-4956-aaee-53fb7038c608","html_url":"https://github.com/wjcunningham7/fastmath","commit_stats":{"total_commits":100,"total_committers":5,"mean_commits":20.0,"dds":"0.31000000000000005","last_synced_commit":"6b90a88b3056020a48c6db22efb98ff66162edd8"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjcunningham7%2Ffastmath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjcunningham7%2Ffastmath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjcunningham7%2Ffastmath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjcunningham7%2Ffastmath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wjcunningham7","download_url":"https://codeload.github.com/wjcunningham7/fastmath/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244079614,"owners_count":20394762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly-language","bitset","cpp","hypergeometric-function","numerical-methods"],"created_at":"2024-10-06T11:04:59.138Z","updated_at":"2025-03-20T19:30:41.544Z","avatar_url":"https://github.com/wjcunningham7.png","language":"C++","readme":"FastMath Library\n================\n\n\u003cdiv align=\"center\"\u003e\n\n[![version](https://img.shields.io/github/v/tag/wjcunningham7/fastmath?include_prereleases\u0026label=version)](https://github.com/wjcunningham7/fastmath)\n![platform](https://img.shields.io/badge/platform-linux-lightgrey)\n[![tests](https://github.com/wjcunningham7/fastmath/actions/workflows/tests.yml/badge.svg)](https://github.com/wjcunningham7/fastmath/actions/workflows/tests.yml)\n\u003c!--[![codecov](https://codecov.io/gh/wjcunningham7/fastmath/branch/develop/graph/badge.svg?token=L6H7Y03EOJ)](https://codecov.io/gh/wjcunningham7/fastmath)--\u003e\n[![license](https://img.shields.io/github/license/wjcunningham7/fastmath)](https://opensource.org/licenses/MIT)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6432268.svg)](https://doi.org/10.5281/zenodo.6432268)\n\n\u003c/div\u003e\n\n## Overview\nThis repository contains the FastMath library. It provides numerical approximations for math functions (especially for the Gauss Hypergeometric function) numerical integration wrappers, compact data structures (such as the FastBitset), and other useful utility functions. This package is intended to be copmpiled and installed on the platform on which it will ultimately be used.  It is **not** portable once installed.  **NOTE**: This package is officially maintained for Linux only, though some users have had success using it on MacOS as well.\n\n## Environment Variables\nThere are several environment variables one should export in the $HOME/.bashrc file before installation:\n\n#### Installation Path\n`FASTMATH_HOME` is the directory where the package is installed, and where other programs may find it later. Some typical options are\n\n        $ export FASTMATH_HOME=/usr/local\n        $ export FASTMATH_HOME=/opt\n        $ export FASTMATH_HOME=$HOME/release\n\n#### Bitset Alignment\n`FBALIGN` is the alignment of the `FastBitset`. If your CPU supports AVX2 (AVX-512) it will be set automatically to 256 (512). If not set, the installation script will determine this for you. Options are\n\n        $ export FBALIGN=64\n        $ export FBALIGN=256\n        $ export FBALIGN=512\n\n#### Platform Name\n`PLATFORM` is the name of the system on which you are installing the package. If you are using a workstation, try\n\n        $ export PLATFORM=$HOSTNAME\n\n   whereas if you are on a cluster, you should set it to the name of the partition/queue you are using, e.g.\n\n        $ export PLATFORM=general\n\n   supposing that `general` is the name of the default partition.\n\n#### Boost Installation Path\n`BOOST_ROOT` is the installation directory of Boost. See below for more information on dependencies. If you installed Boost using a package manager, or you installed it from source without specifying the installation directory, you do not need to set this variable.\n\n#### FastMath Headers\n`CPATH` tells the compiler where to search for header files. If other packages cannot find the FastMath headers, try the following:\n\n        $ export CPATH=$FASTMATH_HOME/include:$CPATH\n\n#### FastMath Libraries\n`LD_LIBRARY_PATH` tells the compiler where to look for compiled libraries. If FastMath is installed into a non-standard directory, you may need to add the following for other packages to find the FastMath library:\n\n        $ export LD_LIBRARY_PATH=$FASTMATH_HOME/lib:$LD_LIBRARY_PATH\n\n## Prerequisites\nThe following packages should be installed prior to installation of this package:\n\n#### Boost v1.55.0 or Newer\nThere is not guaranteed support for the newest releases. It can be installed via the Linux package managers in the following way:\n\n   Ubuntu/Debian:\n\n        $ sudo apt-get install libboost-all-dev\n\n   Fedora/RedHat/CentOS:\n\n        $ sudo yum install boost boost-devel\n\n   Arch:\n\n        $ sudo pacman -S boost boost-libs\n\n   Gentoo:\n\n        $ sudo emerge boost\n\n   If you wish to install a particular version from source, visit the [Boost](www.boost.org) webpage and follow their instructions.\n\n#### GNU Scientific Library v1.13 or Newer\nThis can be installed via the Linux package managers in the following way:\n\n   Ubuntu/Debian:\n\n        $ sudo apt-get install libgsl-dev\n\n   Fedora/RedHat/CentOS:\n\n        $ sudo yum install gsl gsl-devel\n\n   Arch:\n\n        $ sudo pacman -S gsl\n\n   Gentoo:\n\n        $ sudo emerge gsl\n\n#### GNU Compilers v5.4.0 or Newer\nThe version of Boost you choose will determine which compiler version you need, e.g., it is unwise to use a very old or very new compiler with the newest release of Boost.  To determine your compiler version, run\n\n        $ gcc --version\n\n#### Binutils v2.24 or Newer\nThis is needed so AVX2 and AVX-512 instructions are recognized by your assembler, supposing they are supported by the hardware.  To determine your assembler version, run\n\n        $ as -v\n\n#### Autotools v2.69 or Newer\nThis is the Linux utility used to generate the configure and Makefile scripts. It may be installed via the package managers in the following way:\n\n   Ubuntu/Debian:\n\n        $ sudo apt-get install autoconf automake\n\n   Fedora/RedHat/CentOS:\n\n        $ sudo yum install autoconf automake\n\n   Arch:\n\n        $ sudo pacman -S autoconf automake\n\n   Gentoo:\n\n        $ sudo emerge autoconf automake\n\n   To determine the version currently installed, run\n\n        $ autoconf --version\n\n## Compilation and Installation\nDo not attempt to compile and install this package until the dependencies are installed and the environment is properly configured. Once you are ready, run the installation script:\n\n        $ ./install\n\nOnce it has been executed, if there are no errors you may run\n\n        $ sudo make install\n\nto install it system-wide. To clean up the directory, you can reverse the above with\n\n        $ make distclean\n\nIf you wish to uninstall it system-wide, you should first run\n\n        $ make uninstall\n\nbefore cleaning up.\n\n## Testing\nThere are several test scripts which are used to verify the assembly code used in `inc/fastbitset.h` is working. You can try this with\n\n        $ (cd test \u0026\u0026 sh ./test.sh)\n\n## Usage\nIf you intend to use this with another package, and that package is compiled using autotools, you can use the M4 file `m4/ax_fastmath.m4`.  Alternatively, you can link directly against the library with\n\n        $ -L $FASTMATH_HOME/lib -lfastmath$_PLATFORM\n\nand include the headers with\n\n        $ -I $FASTMATH_HOME/include\n\n## Release Notes\n\nRelease notes are available in the [Changelog](https://github.com/wjcunningham7/fastmath/blob/master/CHANGELOG.md).\n\n## Citation\n\nPlease use the following citation in any publications:\n\n\u003e W. J. Cunningham. *FastMath.* Zenodo, 2022. https://doi.org/10.5281/zenodo.6432268\n\n## License\n\nFastMath is licensed under the GNU GPL 3.0 License. See the [LICENSE](https://github.com/wjcunningham7/fastmath/blob/master/LICENSE) file for more details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwjcunningham7%2Ffastmath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwjcunningham7%2Ffastmath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwjcunningham7%2Ffastmath/lists"}