ParagonIE_Sodium_Core32_Int32::mulInt() public WP 1.0
{} It's a method of the class: ParagonIE_Sodium_Core32_Int32{}
No Hooks.
Return
ParagonIE_Sodium_Core32_Int32
. Null. Nothing.
Usage
$ParagonIE_Sodium_Core32_Int32 = new ParagonIE_Sodium_Core32_Int32(); $ParagonIE_Sodium_Core32_Int32->mulInt( $int, $size );
- $int(int)
- -
- $size(int)
- -
Code of ParagonIE_Sodium_Core32_Int32::mulInt() ParagonIE Sodium Core32 Int32::mulInt WP 5.7
public function mulInt($int = 0, $size = 0)
{
ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
if (ParagonIE_Sodium_Compat::$fastMult) {
return $this->mulIntFast((int) $int);
}
/** @var int $int */
$int = (int) $int;
/** @var int $size */
$size = (int) $size;
if (!$size) {
$size = 31;
}
/** @var int $size */
$a = clone $this;
$return = new ParagonIE_Sodium_Core32_Int32();
$return->unsignedInt = $this->unsignedInt;
// Initialize:
$ret0 = 0;
$ret1 = 0;
$a0 = $a->limbs[0];
$a1 = $a->limbs[1];
/** @var int $size */
/** @var int $i */
for ($i = $size; $i >= 0; --$i) {
$m = (int) (-($int & 1));
$x0 = $a0 & $m;
$x1 = $a1 & $m;
$ret1 += $x1;
$c = $ret1 >> 16;
$ret0 += $x0 + $c;
$ret0 &= 0xffff;
$ret1 &= 0xffff;
$a1 = ($a1 << 1);
$x1 = $a1 >> 16;
$a0 = ($a0 << 1) | $x1;
$a0 &= 0xffff;
$a1 &= 0xffff;
$int >>= 1;
}
$return->limbs[0] = $ret0;
$return->limbs[1] = $ret1;
return $return;
}