3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo "Test 1: Factorial of 2^50 + 1\n"; try { $value = 2**50 + 1; echo "Calculating factorial of: $value\n"; $result = gmp_fact($value); echo "Result: " . gmp_strval($result) . "\n"; } catch (\ValueError $e) { echo "ValueError: " . $e->getMessage() . "\n"; } catch (\Error $e) { echo "Error: " . $e->getMessage() . "\n"; } echo "\nTest 2: Another large value\n"; try { $value = 1000000000000; // 1 trillion echo "Calculating factorial of: $value\n"; $result = gmp_fact($value); echo "Result: " . gmp_strval($result) . "\n"; } catch (\ValueError $e) { echo "ValueError: " . $e->getMessage() . "\n"; } catch (\Error $e) { echo "Error: " . $e->getMessage() . "\n"; } echo "\nTest 3: Moderately large value that should work\n"; try { $value = 100; echo "Calculating factorial of: $value\n"; $result = gmp_fact($value); echo "Result length: " . strlen(gmp_strval($result)) . " digits\n"; } catch (\ValueError $e) { echo "ValueError: " . $e->getMessage() . "\n"; } catch (\Error $e) { echo "Error: " . $e->getMessage() . "\n"; } echo "\nDone\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 91
Branch analysis from position: 91
1 jumps found. (Code = 62) Position 1 = -2
Found catch point at position: 17
Branch analysis from position: 17
2 jumps found. (Code = 107) Position 1 = 18, Position 2 = 24
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
Branch analysis from position: 24
2 jumps found. (Code = 107) Position 1 = 25, Position 2 = -2
Branch analysis from position: 25
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
Found catch point at position: 24
Branch analysis from position: 24
Found catch point at position: 47
Branch analysis from position: 47
2 jumps found. (Code = 107) Position 1 = 48, Position 2 = 54
Branch analysis from position: 48
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
Branch analysis from position: 54
2 jumps found. (Code = 107) Position 1 = 55, Position 2 = -2
Branch analysis from position: 55
1 jumps found. (Code = 42) Position 1 = 91
Branch analysis from position: 91
Found catch point at position: 54
Branch analysis from position: 54
Found catch point at position: 78
Branch analysis from position: 78
2 jumps found. (Code = 107) Position 1 = 79, Position 2 = 85
Branch analysis from position: 79
1 jumps found. (Code = 42) Position 1 = 91
Branch analysis from position: 91
Branch analysis from position: 85
2 jumps found. (Code = 107) Position 1 = 86, Position 2 = -2
Branch analysis from position: 86
1 jumps found. (Code = 62) Position 1 = -2
Found catch point at position: 85
Branch analysis from position: 85
filename:       /in/X428B
function name:  (null)
number of ops:  93
compiled vars:  !0 = $value, !1 = $result, !2 = $e
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   ECHO                                                     'Test+1%3A+Factorial+of+2%5E50+%2B+1%0A'
    6     1        ASSIGN                                                   !0, 1125899906842625
    7     2        ROPE_INIT                                     3  ~5      'Calculating+factorial+of%3A+'
          3        ROPE_ADD                                      1  ~5      ~5, !0
          4        ROPE_END                                      2  ~4      ~5, '%0A'
          5        ECHO                                                     ~4
    8     6        INIT_FCALL_BY_NAME                                       'gmp_fact'
          7        SEND_VAR_EX                                              !0
          8        DO_FCALL                                      0  $7      
          9        ASSIGN                                                   !1, $7
    9    10        INIT_FCALL_BY_NAME                                       'gmp_strval'
         11        SEND_VAR_EX                                              !1
         12        DO_FCALL                                      0  $9      
         13        CONCAT                                           ~10     'Result%3A+', $9
         14        CONCAT                                           ~11     ~10, '%0A'
         15        ECHO                                                     ~11
         16      > JMP                                                      ->30
   10    17  E > > CATCH                                                    'ValueError', ->24
   11    18    >   INIT_METHOD_CALL                                         !2, 'getMessage'
         19        DO_FCALL                                      0  $12     
         20        CONCAT                                           ~13     'ValueError%3A+', $12
         21        CONCAT                                           ~14     ~13, '%0A'
         22        ECHO                                                     ~14
         23      > JMP                                                      ->30
   12    24  E > > CATCH                                       last         'Error'
   13    25    >   INIT_METHOD_CALL                                         !2, 'getMessage'
         26        DO_FCALL                                      0  $15     
         27        CONCAT                                           ~16     'Error%3A+', $15
         28        CONCAT                                           ~17     ~16, '%0A'
         29        ECHO                                                     ~17
   16    30    >   ECHO                                                     '%0ATest+2%3A+Another+large+value%0A'
   18    31        ASSIGN                                                   !0, 1000000000000
   19    32        ROPE_INIT                                     3  ~20     'Calculating+factorial+of%3A+'
         33        ROPE_ADD                                      1  ~20     ~20, !0
         34        ROPE_END                                      2  ~19     ~20, '%0A'
         35        ECHO                                                     ~19
   20    36        INIT_FCALL_BY_NAME                                       'gmp_fact'
         37        SEND_VAR_EX                                              !0
         38        DO_FCALL                                      0  $22     
         39        ASSIGN                                                   !1, $22
   21    40        INIT_FCALL_BY_NAME                                       'gmp_strval'
         41        SEND_VAR_EX                                              !1
         42        DO_FCALL                                      0  $24     
         43        CONCAT                                           ~25     'Result%3A+', $24
         44        CONCAT                                           ~26     ~25, '%0A'
         45        ECHO                                                     ~26
         46      > JMP                                                      ->60
   22    47  E > > CATCH                                                    'ValueError', ->54
   23    48    >   INIT_METHOD_CALL                                         !2, 'getMessage'
         49        DO_FCALL                                      0  $27     
         50        CONCAT                                           ~28     'ValueError%3A+', $27
         51        CONCAT                                           ~29     ~28, '%0A'
         52        ECHO                                                     ~29
         53      > JMP                                                      ->60
   24    54  E > > CATCH                                       last         'Error'
   25    55    >   INIT_METHOD_CALL                                         !2, 'getMessage'
         56        DO_FCALL                                      0  $30     
         57        CONCAT                                           ~31     'Error%3A+', $30
         58        CONCAT                                           ~32     ~31, '%0A'
         59        ECHO                                                     ~32
   28    60    >   ECHO                                                     '%0ATest+3%3A+Moderately+large+value+that+should+work%0A'
   30    61        ASSIGN                                                   !0, 100
   31    62        ROPE_INIT                                     3  ~35     'Calculating+factorial+of%3A+'
         63        ROPE_ADD                                      1  ~35     ~35, !0
         64        ROPE_END                                      2  ~34     ~35, '%0A'
         65        ECHO                                                     ~34
   32    66        INIT_FCALL_BY_NAME                                       'gmp_fact'
         67        SEND_VAR_EX                                              !0
         68        DO_FCALL                                      0  $37     
         69        ASSIGN                                                   !1, $37
   33    70        INIT_FCALL_BY_NAME                                       'gmp_strval'
         71        SEND_VAR_EX                                              !1
         72        DO_FCALL                                      0  $39     
         73        STRLEN                                           ~40     $39
         74        CONCAT                                           ~41     'Result+length%3A+', ~40
         75        CONCAT                                           ~42     ~41, '+digits%0A'
         76        ECHO                                                     ~42
         77      > JMP                                                      ->91
   34    78  E > > CATCH                                                    'ValueError', ->85
   35    79    >   INIT_METHOD_CALL                                         !2, 'getMessage'
         80        DO_FCALL                                      0  $43     
         81        CONCAT                                           ~44     'ValueError%3A+', $43
         82        CONCAT                                           ~45     ~44, '%0A'
         83        ECHO                                                     ~45
         84      > JMP                                                      ->91
   36    85  E > > CATCH                                       last         'Error'
   37    86    >   INIT_METHOD_CALL                                         !2, 'getMessage'
         87        DO_FCALL                                      0  $46     
         88        CONCAT                                           ~47     'Error%3A+', $46
         89        CONCAT                                           ~48     ~47, '%0A'
         90        ECHO                                                     ~48
   40    91    >   ECHO                                                     '%0ADone%0A'
         92      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
142.66 ms | 1016 KiB | 13 Q