function summation()

in distpi/bbp.js [17:36]


function summation(j, n, d, mask) {
    const shift = d << 2n;

    let left = 0n;

    for(let k = 0n; k <= n; k++) {
        const r = k * 8n + j;
        left = (left + (modpow(16n, n - k, r) << shift) / r) & mask;
    }

    let right = 0n;

    for(let k = n + 1n; ; k++) {
        const rnew = right + 16n ** (d + n - k) / (k * 8n + j);
        if(right === rnew) { break; }
        right = rnew;
    }

    return left + right;
}