3v4l.org

run code in 300+ PHP versions simultaneously
<?php function entropy($a, $b) { $options = array_filter(func_get_args()); $total = array_sum($options); $entropy = 0; foreach ($options as $size) { $part = $size / $total; $entropy -= $part * log($part, 2); } return $entropy; } var_dump('1 4', entropy(1, 4)); // abbbb echo "\n"; var_dump('2 2', entropy(2, 2)); // aabb echo "\n"; var_dump('2 2 2', entropy(2, 2, 2)); // aabbcc echo "\n"; var_dump('2 2 2 2', entropy(2, 2, 2, 2)); // aabbccdd echo "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/s7JJO
function name:  (null)
number of ops:  40
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   16     0  E >   INIT_FCALL                                               'var_dump'
          1        SEND_VAL                                                 '1+4'
          2        INIT_FCALL                                               'entropy'
          3        SEND_VAL                                                 1
          4        SEND_VAL                                                 4
          5        DO_FCALL                                      0  $0      
          6        SEND_VAR                                                 $0
          7        DO_ICALL                                                 
   17     8        ECHO                                                     '%0A'
   19     9        INIT_FCALL                                               'var_dump'
         10        SEND_VAL                                                 '2+2'
         11        INIT_FCALL                                               'entropy'
         12        SEND_VAL                                                 2
         13        SEND_VAL                                                 2
         14        DO_FCALL                                      0  $2      
         15        SEND_VAR                                                 $2
         16        DO_ICALL                                                 
   20    17        ECHO                                                     '%0A'
   22    18        INIT_FCALL                                               'var_dump'
         19        SEND_VAL                                                 '2+2+2'
         20        INIT_FCALL                                               'entropy'
         21        SEND_VAL                                                 2
         22        SEND_VAL                                                 2
         23        SEND_VAL                                                 2
         24        DO_FCALL                                      0  $4      
         25        SEND_VAR                                                 $4
         26        DO_ICALL                                                 
   23    27        ECHO                                                     '%0A'
   25    28        INIT_FCALL                                               'var_dump'
         29        SEND_VAL                                                 '2+2+2+2'
         30        INIT_FCALL                                               'entropy'
         31        SEND_VAL                                                 2
         32        SEND_VAL                                                 2
         33        SEND_VAL                                                 2
         34        SEND_VAL                                                 2
         35        DO_FCALL                                      0  $6      
         36        SEND_VAR                                                 $6
         37        DO_ICALL                                                 
   26    38        ECHO                                                     '%0A'
         39      > RETURN                                                   1

Function entropy:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 13, Position 2 = 23
Branch analysis from position: 13
2 jumps found. (Code = 78) Position 1 = 14, Position 2 = 23
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
Branch analysis from position: 23
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 23
filename:       /in/s7JJO
function name:  entropy
number of ops:  26
compiled vars:  !0 = $a, !1 = $b, !2 = $options, !3 = $total, !4 = $entropy, !5 = $size, !6 = $part
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    4     2        INIT_FCALL                                               'array_filter'
          3        FUNC_GET_ARGS                                    ~7      
          4        SEND_VAL                                                 ~7
          5        DO_ICALL                                         $8      
          6        ASSIGN                                                   !2, $8
    5     7        INIT_FCALL                                               'array_sum'
          8        SEND_VAR                                                 !2
          9        DO_ICALL                                         $10     
         10        ASSIGN                                                   !3, $10
    7    11        ASSIGN                                                   !4, 0
    8    12      > FE_RESET_R                                       $13     !2, ->23
         13    > > FE_FETCH_R                                               $13, !5, ->23
    9    14    >   DIV                                              ~14     !5, !3
         15        ASSIGN                                                   !6, ~14
   10    16        INIT_FCALL                                               'log'
         17        SEND_VAR                                                 !6
         18        SEND_VAL                                                 2
         19        DO_ICALL                                         $16     
         20        MUL                                              ~17     !6, $16
         21        ASSIGN_OP                                     2          !4, ~17
    8    22      > JMP                                                      ->13
         23    >   FE_FREE                                                  $13
   13    24      > RETURN                                                   !4
   14    25*     > RETURN                                                   null

End of function entropy

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
174.55 ms | 1403 KiB | 25 Q