ParagonIE_Sodium_Core32_Int32::mulInt32Fast()
{} Это метод класса: ParagonIE_Sodium_Core32_Int32{}
Хуков нет.
Возвращает
ParagonIE_Sodium_Core32_Int32
.
Использование
$ParagonIE_Sodium_Core32_Int32 = new ParagonIE_Sodium_Core32_Int32(); $ParagonIE_Sodium_Core32_Int32->mulInt32Fast( $right );
- $right(ParagonIE_Sodium_Core32_Int32) (обязательный)
- -
Код ParagonIE_Sodium_Core32_Int32::mulInt32Fast() ParagonIE Sodium Core32 Int32::mulInt32Fast WP 6.0
public function mulInt32Fast(ParagonIE_Sodium_Core32_Int32 $right) { $aNeg = ($this->limbs[0] >> 15) & 1; $bNeg = ($right->limbs[0] >> 15) & 1; $a = array_reverse($this->limbs); $b = array_reverse($right->limbs); if ($aNeg) { for ($i = 0; $i < 2; ++$i) { $a[$i] = ($a[$i] ^ 0xffff) & 0xffff; } ++$a[0]; } if ($bNeg) { for ($i = 0; $i < 2; ++$i) { $b[$i] = ($b[$i] ^ 0xffff) & 0xffff; } ++$b[0]; } $res = $this->multiplyLong($a, $b); if ($aNeg !== $bNeg) { if ($aNeg !== $bNeg) { for ($i = 0; $i < 2; ++$i) { $res[$i] = ($res[$i] ^ 0xffff) & 0xffff; } $c = 1; for ($i = 0; $i < 2; ++$i) { $res[$i] += $c; $c = $res[$i] >> 16; $res[$i] &= 0xffff; } } } $return = new ParagonIE_Sodium_Core32_Int32(); $return->limbs = array( $res[1] & 0xffff, $res[0] & 0xffff ); if (count($res) > 2) { $return->overflow = $res[2]; } return $return; }