// BigNumber example: Calculate decimal digits of Pi using Gosper's series
// http://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/spigot.pdf
// #include <BigNumber.h> // For a normal Arduino project
#include "BigNumber.h" // For Wokwi simulation
// constants
const BigNumber one(1);
const BigNumber two(2);
const BigNumber three(3);
const BigNumber five(5);
const BigNumber ten(10);
const BigNumber twelve(12);
const BigNumber twentyseven(27);
// variables
BigNumber q(1);
BigNumber r(180);
BigNumber t(60);
BigNumber i(2);
BigNumber u, y;
void setup() {
Serial1.begin(115200);
BigNumber::begin(0); // everything is integers throughout
}
void loop() {
// Gibbons' spigot
u = three * (three * i + one) * (three * i + two);
y = (q * (twentyseven * i - twelve) + five * r) / (five * t);
r = ten * u * (q * (five * i - two) + r - y * t);
q = ten * q * i * (two * i - one);
t *= u;
Serial1.print(y);
if (i++ == 2)
Serial1.print('.');
}
pico:GP0
pico:GP1
pico:GND.1
pico:GP2
pico:GP3
pico:GP4
pico:GP5
pico:GND.2
pico:GP6
pico:GP7
pico:GP8
pico:GP9
pico:GND.3
pico:GP10
pico:GP11
pico:GP12
pico:GP13
pico:GND.4
pico:GP14
pico:GP15
pico:GP16
pico:GP17
pico:GND.5
pico:GP18
pico:GP19
pico:GP20
pico:GP21
pico:GND.6
pico:GP22
pico:RUN
pico:GP26
pico:GP27
pico:GND.7
pico:GP28
pico:ADC_VREF
pico:3V3
pico:3V3_EN
pico:GND.8
pico:VSYS
pico:VBUS