| @@ 241-262 (lines=22) @@ | ||
| 238 | } |
|
| 239 | ||
| 240 | if (!function_exists('NormalizeBinaryPoint')) { |
|
| 241 | function NormalizeBinaryPoint($binarypointnumber, $maxbits=52) { |
|
| 242 | // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html |
|
| 243 | if (strpos($binarypointnumber, '.') === false) { |
|
| 244 | $binarypointnumber = '0.'.$binarypointnumber; |
|
| 245 | } elseif ($binarypointnumber{0} == '.') { |
|
| 246 | $binarypointnumber = '0'.$binarypointnumber; |
|
| 247 | } |
|
| 248 | $exponent = 0; |
|
| 249 | while (($binarypointnumber{0} != '1') || (substr($binarypointnumber, 1, 1) != '.')) { |
|
| 250 | if (substr($binarypointnumber, 1, 1) == '.') { |
|
| 251 | $exponent--; |
|
| 252 | $binarypointnumber = substr($binarypointnumber, 2, 1).'.'.substr($binarypointnumber, 3); |
|
| 253 | } else { |
|
| 254 | $pointpos = strpos($binarypointnumber, '.'); |
|
| 255 | $exponent += ($pointpos - 1); |
|
| 256 | $binarypointnumber = str_replace('.', '', $binarypointnumber); |
|
| 257 | $binarypointnumber = $binarypointnumber{0}.'.'.substr($binarypointnumber, 1); |
|
| 258 | } |
|
| 259 | } |
|
| 260 | $binarypointnumber = str_pad(substr($binarypointnumber, 0, $maxbits + 2), $maxbits + 2, '0', STR_PAD_RIGHT); |
|
| 261 | return array('normalized'=>$binarypointnumber, 'exponent'=>(int) $exponent); |
|
| 262 | } |
|
| 263 | } |
|
| 264 | ||
| 265 | if (!function_exists('Float2BinaryDecimal')) { |
|
| @@ 152-173 (lines=22) @@ | ||
| 149 | * |
|
| 150 | * @return array |
|
| 151 | */ |
|
| 152 | public static function NormalizeBinaryPoint($binarypointnumber, $maxbits=52) { |
|
| 153 | if (strpos($binarypointnumber, '.') === false) { |
|
| 154 | $binarypointnumber = '0.'.$binarypointnumber; |
|
| 155 | } elseif ($binarypointnumber{0} == '.') { |
|
| 156 | $binarypointnumber = '0'.$binarypointnumber; |
|
| 157 | } |
|
| 158 | $exponent = 0; |
|
| 159 | while (($binarypointnumber{0} != '1') || (substr($binarypointnumber, 1, 1) != '.')) { |
|
| 160 | if (substr($binarypointnumber, 1, 1) == '.') { |
|
| 161 | $exponent--; |
|
| 162 | $binarypointnumber = substr($binarypointnumber, 2, 1).'.'.substr($binarypointnumber, 3); |
|
| 163 | } else { |
|
| 164 | $pointpos = strpos($binarypointnumber, '.'); |
|
| 165 | $exponent += ($pointpos - 1); |
|
| 166 | $binarypointnumber = str_replace('.', '', $binarypointnumber); |
|
| 167 | $binarypointnumber = $binarypointnumber{0}.'.'.substr($binarypointnumber, 1); |
|
| 168 | } |
|
| 169 | } |
|
| 170 | $binarypointnumber = str_pad(substr($binarypointnumber, 0, $maxbits + 2), $maxbits + 2, '0', STR_PAD_RIGHT); |
|
| 171 | return array('normalized'=>$binarypointnumber, 'exponent'=>(int) $exponent); |
|
| 172 | } |
|
| 173 | ||
| 174 | /** |
|
| 175 | * @link http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html |
|
| 176 | * |
|