Litipk\BigNumbers\Decimal::computeSquareIndex PHP Method

computeSquareIndex() private static method

Auxiliar method. It helps us to decompose the exponent into many summands.
private static computeSquareIndex ( string $exponent_remaining, integer $actual_index, integer $exp_scale, integer $inner_scale ) : string
$exponent_remaining string
$actual_index integer
$exp_scale integer Number of $exponent's significative digits
$inner_scale integer ceil($exp_scale*log(10)/log(2))+1;
return string
    private static function computeSquareIndex($exponent_remaining, $actual_index, $exp_scale, $inner_scale)
    {
        $actual_rt = bcpow('0.5', $actual_index, $exp_scale);
        $r = bcsub($exponent_remaining, $actual_rt, $inner_scale);
        while (bccomp($r, 0, $exp_scale) === -1) {
            ++$actual_index;
            $actual_rt = bcmul('0.5', $actual_rt, $inner_scale);
            $r = bcsub($exponent_remaining, $actual_rt, $inner_scale);
        }
        return [$actual_index, $r];
    }