// 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);


void setup() {
  Serial1.begin( 115200);
  BigNumber::begin(0);  // everything is integers throughout
}


void loop() {
  // Gibbons' spigot
  static BigNumber q(1);
  static BigNumber r(180);
  static BigNumber t(60);
  static BigNumber i(2);
  BigNumber u, y;
  u = three * (three * i + one) * (three * i + two);
  y = (q * (twentyseven * i - twelve) + five * r) / (five * t);
  Serial1.print(y);
  if (i == 2) Serial1.print('.');
  r = ten * u * (q * (five * i - two) + r - y * t);
  q = ten * q * i * (two * i - one);
  t *= u;
  i++;
}
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT