# ParagonIE_Sodium_Core32_Int32::mulIntFast

## #Syntax Syntax

ParagonIE_Sodium_Core32_Int32::mulIntFast( int \$int )

\$int

(Required)

## #Source Source

```    public function mulIntFast(\$int)
{
// Handle negative numbers
\$aNeg = (\$this->limbs[0] >> 15) & 1;
\$bNeg = (\$int >> 31) & 1;
\$a = array_reverse(\$this->limbs);
\$b = array(
\$int & 0xffff,
(\$int >> 16) & 0xffff
);
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];
}
// Multiply
\$res = \$this->multiplyLong(\$a, \$b);

// Re-apply negation to results
if (\$aNeg !== \$bNeg) {
for (\$i = 0; \$i < 2; ++\$i) {
\$res[\$i] = (0xffff ^ \$res[\$i]) & 0xffff;
}
// Handle integer overflow
\$c = 1;
for (\$i = 0; \$i < 2; ++\$i) {
\$res[\$i] += \$c;
\$c = \$res[\$i] >> 16;
\$res[\$i] &= 0xffff;
}
}

// Return our values
\$return = new ParagonIE_Sodium_Core32_Int32();
\$return->limbs = array(
\$res[1] & 0xffff,
\$res[0] & 0xffff
);
if (count(\$res) > 2) {
\$return->overflow = \$res[2] & 0xffff;
}
\$return->unsignedInt = \$this->unsignedInt;
return \$return;
}
```