3v4l.org

run code in 300+ PHP versions simultaneously
<?php function calcPi($precision){ $limit = ceil(log($precision)/log(2))-1; bcscale($precision+6); $a = 1; $b = bcdiv(1,bcsqrt(2)); $t = 1/4; $p = 1; for($n = 0; $n < $limit; $n++){ $x = bcdiv(bcadd($a,$b),2); $y = bcsqrt(bcmul($a, $b)); $t = bcsub($t, bcmul($p,bcpow(bcsub($a,$x),2))); $a = $x; $b = $y; $p = bcmul(2,$p); } return bcdiv(bcpow(bcadd($a, $b),2),bcmul(4,$t),$precision); } echo calcPi(100);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/PqG37
function name:  (null)
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   20     0  E >   INIT_FCALL                                               'calcpi'
          1        SEND_VAL                                                 100
          2        DO_FCALL                                      0  $0      
          3        ECHO                                                     $0
          4      > RETURN                                                   1

Function calcpi:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
2 jumps found. (Code = 44) Position 1 = 74, Position 2 = 30
Branch analysis from position: 74
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 30
2 jumps found. (Code = 44) Position 1 = 74, Position 2 = 30
Branch analysis from position: 74
Branch analysis from position: 30
filename:       /in/PqG37
function name:  calcPi
number of ops:  93
compiled vars:  !0 = $precision, !1 = $limit, !2 = $a, !3 = $b, !4 = $t, !5 = $p, !6 = $n, !7 = $x, !8 = $y
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
    3     1        INIT_FCALL                                               'ceil'
          2        INIT_FCALL                                               'log'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $9      
          5        INIT_FCALL                                               'log'
          6        SEND_VAL                                                 2
          7        DO_ICALL                                         $10     
          8        DIV                                              ~11     $9, $10
          9        SEND_VAL                                                 ~11
         10        DO_ICALL                                         $12     
         11        SUB                                              ~13     $12, 1
         12        ASSIGN                                                   !1, ~13
    4    13        INIT_FCALL_BY_NAME                                       'bcscale'
         14        ADD                                              ~15     !0, 6
         15        SEND_VAL_EX                                              ~15
         16        DO_FCALL                                      0          
    5    17        ASSIGN                                                   !2, 1
    6    18        INIT_FCALL_BY_NAME                                       'bcdiv'
         19        SEND_VAL_EX                                              1
         20        INIT_FCALL_BY_NAME                                       'bcsqrt'
         21        SEND_VAL_EX                                              2
         22        DO_FCALL                                      0  $18     
         23        SEND_VAR_NO_REF_EX                                       $18
         24        DO_FCALL                                      0  $19     
         25        ASSIGN                                                   !3, $19
    7    26        ASSIGN                                                   !4, 0.25
    8    27        ASSIGN                                                   !5, 1
    9    28        ASSIGN                                                   !6, 0
         29      > JMP                                                      ->72
   10    30    >   INIT_FCALL_BY_NAME                                       'bcdiv'
         31        INIT_FCALL_BY_NAME                                       'bcadd'
         32        SEND_VAR_EX                                              !2
         33        SEND_VAR_EX                                              !3
         34        DO_FCALL                                      0  $24     
         35        SEND_VAR_NO_REF_EX                                       $24
         36        SEND_VAL_EX                                              2
         37        DO_FCALL                                      0  $25     
         38        ASSIGN                                                   !7, $25
   11    39        INIT_FCALL_BY_NAME                                       'bcsqrt'
         40        INIT_FCALL_BY_NAME                                       'bcmul'
         41        SEND_VAR_EX                                              !2
         42        SEND_VAR_EX                                              !3
         43        DO_FCALL                                      0  $27     
         44        SEND_VAR_NO_REF_EX                                       $27
         45        DO_FCALL                                      0  $28     
         46        ASSIGN                                                   !8, $28
   12    47        INIT_FCALL_BY_NAME                                       'bcsub'
         48        SEND_VAR_EX                                              !4
         49        INIT_FCALL_BY_NAME                                       'bcmul'
         50        SEND_VAR_EX                                              !5
         51        INIT_FCALL_BY_NAME                                       'bcpow'
         52        INIT_FCALL_BY_NAME                                       'bcsub'
         53        SEND_VAR_EX                                              !2
         54        SEND_VAR_EX                                              !7
         55        DO_FCALL                                      0  $30     
         56        SEND_VAR_NO_REF_EX                                       $30
         57        SEND_VAL_EX                                              2
         58        DO_FCALL                                      0  $31     
         59        SEND_VAR_NO_REF_EX                                       $31
         60        DO_FCALL                                      0  $32     
         61        SEND_VAR_NO_REF_EX                                       $32
         62        DO_FCALL                                      0  $33     
         63        ASSIGN                                                   !4, $33
   13    64        ASSIGN                                                   !2, !7
   14    65        ASSIGN                                                   !3, !8
   15    66        INIT_FCALL_BY_NAME                                       'bcmul'
         67        SEND_VAL_EX                                              2
         68        SEND_VAR_EX                                              !5
         69        DO_FCALL                                      0  $37     
         70        ASSIGN                                                   !5, $37
    9    71        PRE_INC                                                  !6
         72    >   IS_SMALLER                                               !6, !1
         73      > JMPNZ                                                    ~40, ->30
   17    74    >   INIT_FCALL_BY_NAME                                       'bcdiv'
         75        INIT_FCALL_BY_NAME                                       'bcpow'
         76        INIT_FCALL_BY_NAME                                       'bcadd'
         77        SEND_VAR_EX                                              !2
         78        SEND_VAR_EX                                              !3
         79        DO_FCALL                                      0  $41     
         80        SEND_VAR_NO_REF_EX                                       $41
         81        SEND_VAL_EX                                              2
         82        DO_FCALL                                      0  $42     
         83        SEND_VAR_NO_REF_EX                                       $42
         84        INIT_FCALL_BY_NAME                                       'bcmul'
         85        SEND_VAL_EX                                              4
         86        SEND_VAR_EX                                              !4
         87        DO_FCALL                                      0  $43     
         88        SEND_VAR_NO_REF_EX                                       $43
         89        SEND_VAR_EX                                              !0
         90        DO_FCALL                                      0  $44     
         91      > RETURN                                                   $44
   18    92*     > RETURN                                                   null

End of function calcpi

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
166.21 ms | 1407 KiB | 18 Q