Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jedbrooke/pi_spigot
Pi On Golem
https://github.com/jedbrooke/pi_spigot
bbp cpp golem pi x86-assembly
Last synced: 2 months ago
JSON representation
Pi On Golem
- Host: GitHub
- URL: https://github.com/jedbrooke/pi_spigot
- Owner: jedbrooke
- License: gpl-3.0
- Created: 2022-02-17T07:18:49.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-05-07T05:10:39.000Z (8 months ago)
- Last Synced: 2024-10-01T04:31:24.238Z (3 months ago)
- Topics: bbp, cpp, golem, pi, x86-assembly
- Language: C
- Homepage:
- Size: 65.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pi Spigot
## a high performance pi spigot for finding far out digits of pithis pi spigot uses high performance C++ and inline x86 asm to find far out digits of pi in base 16.
current performance:
```
50 hexits around the 1millionth hexit: 1.5s
```
Usage:
```
./pi_spigot [-f] n [range (default 50)]
```
`n` is the starting position to find hexits from, range is how many hexits to findthe `-f` flag will make the program output all hexits from 0 to `n`
## TODO:
- [x] figure out why it breaks after around 500mil
- [x] implement basic [BBP formula](https://en.wikipedia.org/wiki/Bailey%E2%80%93Borwein%E2%80%93Plouffe_formula)
- [x] look into implementing [Bellard's formula](https://en.wikipedia.org/wiki/Bellard%27s_formula)
- [x] implement custom 64bit fractional types
- [x] experiment with *faster* 64bit division
- [x] **implement *enhanced* arbitrary depth fractional types for more precision**
- [x] addition
- [x] multiplication
- [x] division (based on multiplication with nr/gs)
- [x] real division with hardware `div` instruction
- [x] (optional side quest) experiment with generalising to arbitrary bit debth
- [ ] parallelize with multi-threading
- [ ] (optional side quest) gpu accelerated version
- [ ] speed up with `avx`
- [ ] distribute over many systems with Golem's `yapapi` (see [POG](https://github.com/jedbrooke/pog))