in maxas/MaxAs/MaxAsGrammar.pm [58:79]
sub getF
{
my ($val, $pos, $type, $trunc) = @_;
# hexidecial value
if ($val =~ m'^0x[0-9a-zA-Z]+')
{
$val = hex($val);
}
# support infinity
elsif ($val =~ m'INF'i)
{
$val = $trunc ? ($type eq 'f' ? 0x7f800 : 0x7ff00) : 0x7f800000;
}
else
{
$val = unpack(($type eq 'f' ? 'L' : 'Q'), pack $type, $val);
# strip off sign bit if truncating. It will added elsewhere in the code by the flag capture.
$val = ($val >> $trunc) & 0x7ffff if $trunc;
}
return $val << $pos;
}