[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/ -> EvalBarrett.php (summary)

PHP Dynamic Barrett Modular Exponentiation Engine PHP version 5 and 7

Author: Jim Wigginton
Copyright: 2017 Jim Wigginton
License: http://www.opensource.org/licenses/mit-license.html MIT License
Link: http://pear.php.net/package/Math_BigInteger
File Size: 484 lines (16 kb)
Included or required:0 times
Referenced: 0 times
Includes or requires: 0 files

Defines 9 functions

  reduce()
  generateCustomReduction()
  generateInlineTrim()
  generateInlineMultiply()
  generateInlineAdd()
  generateInlineSubtract2()
  generateInlineSubtract1()
  generateInlineCompare()
  float2string()

Functions
Functions that are not part of a class:

reduce(array $n, array $m, $class)   X-Ref
Barrett Modular Reduction

This calls a dynamically generated loop unrolled function that's specific to a given modulo.
Array lookups are avoided as are if statements testing for how many bits the host OS supports, etc.

return: array
param: array $n
param: array $m
param: string $class

generateCustomReduction(PHP $m, $class)   X-Ref
Generate Custom Reduction

return: callable
param: PHP $m
param: string $class

generateInlineTrim($name)   X-Ref
Inline Trim

Removes leading zeros

return: string
param: string $name

generateInlineMultiply($input, array $arr, $output, $class)   X-Ref
Inline Multiply (unknown, known)

return: string
param: string $input
param: array $arr
param: string $output
param: string $class

generateInlineAdd($x, $y, $result, $class)   X-Ref
Inline Addition

return: string
param: string $x
param: string $y
param: string $result
param: string $class

generateInlineSubtract2($known, $unknown, $result, $class)   X-Ref
Inline Subtraction 2

For when $known is more digits than $unknown. This is the harder use case to optimize for.

return: string
param: string $known
param: string $unknown
param: string $result
param: string $class

generateInlineSubtract1($unknown, array $known, $result, $class)   X-Ref
Inline Subtraction 1

For when $unknown is more digits than $known. This is the easier use case to optimize for.

return: string
param: string $unknown
param: array $known
param: string $result
param: string $class

generateInlineCompare(array $known, $unknown, $subcode)   X-Ref
Inline Comparison

If $unknown >= $known then loop

return: string
param: array $known
param: string $unknown
param: string $subcode

float2string($num)   X-Ref
Convert a float to a string

If you do echo floatval(pow(2, 52)) you'll get 4.6116860184274E+18. It /can/ be displayed without a loss of
precision but displayed in this way there will be precision loss, hence the need for this method.

return: string
param: int|float $num