Quote
NASA uses 15 digits of PI for most calculations. At most 37 digits of PI are needed to relate the size of the known universe to that of a hydrogen atom.

I don't know anything about that... but this is still fun! smile

Code
; /frac | $frac | /frac 3.14 | $frac(3.14) | $frac().ticks
frac {
  ; requires mIRC 7.72 bigfloat
  var %ticks = $ticks
  if (!$isid) window -asdDoe2izj100000M -t0,31,62 @frac $iif(!$window(@frac),-1 -1 900 600)
  clear @frac
  if (!$1) /tokenize 32 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
  var %whole = $int($1)
  var %decim.bf = $calc($1)
  var %min_numer = %whole, %min_denom = 1
  var %max_numer = %whole + 1, %max_denom = 1
  var %mid_numer, %mid_denom, %frac, %frac.bf, %delta.bf
  while (1) {
    %mid_numer = %min_numer + %max_numer
    %mid_denom = %min_denom + %max_denom
    %frac = %mid_numer $+ / $+ %mid_denom
    %frac.bf = %mid_numer / %mid_denom
    %delta.bf = %frac.bf - %decim.bf
    if (!$isid) {
      aline @frac $gettok(%delta.bf,2,46) $+ $chr(9) $+ %delta.bf $+ $chr(9) $+ %frac $+ $chr(9) $+ %frac.bf
    }
    if (%delta.bf < 0) {
      %min_numer = %mid_numer
      %min_denom = %mid_denom
    }
    elseif (%delta.bf > 0) {
      %max_numer = %mid_numer
      %max_denom = %mid_denom
    }
    else {
      if (!$isid) echo -a done $calc($ticks - %ticks) ms. %frac = %frac.bf
      if ($prop == ticks) return $calc($ticks - %ticks)
      return %frac
    }
  }  
  ; https://stackoverflow.com/a/5128558/8805628
} ; Raccoon 2022


Quote
I'll be adding a /bigfloat -dN switch to the next beta to allow you to set the required number of decimal places.

However, note that increasing the number of significant digits/decimal places that the MAPM library uses/returns decreases calculation speed siginifcantly, so it is not something you should do unless you need it.

Thank you =^_^=


Well. At least I won lunch.
Good philosophy, see good in bad, I like!