3v4l.org

run code in 300+ PHP versions simultaneously
<?php function rgb2cmyk($r, $g, $b) { $c = 255 - $r; $m = 255 - $g; $y = 255 - $b; $b = min($c, $m, $y); $c = round(($c - $b) / (255 - $b)); $m = round(($m - $b) / (255 - $b)); $y = round(($y - $b) / (255 - $b)); $k = round($b / 255); return array($c, $m, $y, $k); } function cmyk2rgb($c, $m, $y, $k) { $r = 255 - round(255 * ($c - $c * $k - $k)); $g = 255 - round(255 * ($m - $m * $k - $k)); $b = 255 - round(255 * ($y - $y * $k - $k)); return array($r, $g, $b); } for ($i = 0; $i < 20; $i++) { $r = rand() % 255; $g = rand() % 255; $b = rand() % 255; echo "$i. $r, $g, $b -> "; $cmyk = rgb2cmyk($r, $g, $b); echo "{$cmyk[0]}, {$cmyk[1]}, {$cmyk[2]}, {$cmyk[3]} -> "; $rgb = cmyk2rgb($cmyk[0], $cmyk[1], $cmyk[2], $cmyk[3]); echo "{$rgb[0]}, {$rgb[1]}, {$rgb[2]}"; echo "\n"; }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 64
Branch analysis from position: 64
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 2
Branch analysis from position: 66
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 2
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 2
Branch analysis from position: 66
Branch analysis from position: 2
filename:       /in/F7tOX
function name:  (null)
number of ops:  67
compiled vars:  !0 = $i, !1 = $r, !2 = $g, !3 = $b, !4 = $cmyk, !5 = $rgb
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   28     0  E >   ASSIGN                                                   !0, 0
          1      > JMP                                                      ->64
   30     2    >   INIT_FCALL                                               'rand'
          3        DO_ICALL                                         $7      
          4        MOD                                              ~8      $7, 255
          5        ASSIGN                                                   !1, ~8
   31     6        INIT_FCALL                                               'rand'
          7        DO_ICALL                                         $10     
          8        MOD                                              ~11     $10, 255
          9        ASSIGN                                                   !2, ~11
   32    10        INIT_FCALL                                               'rand'
         11        DO_ICALL                                         $13     
         12        MOD                                              ~14     $13, 255
         13        ASSIGN                                                   !3, ~14
   34    14        ROPE_INIT                                     8  ~17     !0
         15        ROPE_ADD                                      1  ~17     ~17, '.+'
         16        ROPE_ADD                                      2  ~17     ~17, !1
         17        ROPE_ADD                                      3  ~17     ~17, '%2C+'
         18        ROPE_ADD                                      4  ~17     ~17, !2
         19        ROPE_ADD                                      5  ~17     ~17, '%2C+'
         20        ROPE_ADD                                      6  ~17     ~17, !3
         21        ROPE_END                                      7  ~16     ~17, '+-%3E+'
         22        ECHO                                                     ~16
   36    23        INIT_FCALL                                               'rgb2cmyk'
         24        SEND_VAR                                                 !1
         25        SEND_VAR                                                 !2
         26        SEND_VAR                                                 !3
         27        DO_FCALL                                      0  $21     
         28        ASSIGN                                                   !4, $21
   38    29        FETCH_DIM_R                                      ~23     !4, 0
         30        ROPE_INIT                                     8  ~28     ~23
         31        ROPE_ADD                                      1  ~28     ~28, '%2C+'
         32        FETCH_DIM_R                                      ~24     !4, 1
         33        ROPE_ADD                                      2  ~28     ~28, ~24
         34        ROPE_ADD                                      3  ~28     ~28, '%2C+'
         35        FETCH_DIM_R                                      ~25     !4, 2
         36        ROPE_ADD                                      4  ~28     ~28, ~25
         37        ROPE_ADD                                      5  ~28     ~28, '%2C+'
         38        FETCH_DIM_R                                      ~26     !4, 3
         39        ROPE_ADD                                      6  ~28     ~28, ~26
         40        ROPE_END                                      7  ~27     ~28, '+-%3E+'
         41        ECHO                                                     ~27
   40    42        INIT_FCALL                                               'cmyk2rgb'
         43        FETCH_DIM_R                                      ~32     !4, 0
         44        SEND_VAL                                                 ~32
         45        FETCH_DIM_R                                      ~33     !4, 1
         46        SEND_VAL                                                 ~33
         47        FETCH_DIM_R                                      ~34     !4, 2
         48        SEND_VAL                                                 ~34
         49        FETCH_DIM_R                                      ~35     !4, 3
         50        SEND_VAL                                                 ~35
         51        DO_FCALL                                      0  $36     
         52        ASSIGN                                                   !5, $36
   42    53        FETCH_DIM_R                                      ~38     !5, 0
         54        ROPE_INIT                                     5  ~42     ~38
         55        ROPE_ADD                                      1  ~42     ~42, '%2C+'
         56        FETCH_DIM_R                                      ~39     !5, 1
         57        ROPE_ADD                                      2  ~42     ~42, ~39
         58        ROPE_ADD                                      3  ~42     ~42, '%2C+'
         59        FETCH_DIM_R                                      ~40     !5, 2
         60        ROPE_END                                      4  ~41     ~42, ~40
         61        ECHO                                                     ~41
   44    62        ECHO                                                     '%0A'
   28    63        PRE_INC                                                  !0
         64    >   IS_SMALLER                                               !0, 20
         65      > JMPNZ                                                    ~46, ->2
   45    66    > > RETURN                                                   1

Function rgb2cmyk:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/F7tOX
function name:  rgb2cmyk
number of ops:  47
compiled vars:  !0 = $r, !1 = $g, !2 = $b, !3 = $c, !4 = $m, !5 = $y, !6 = $k
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
    5     3        SUB                                              ~7      255, !0
          4        ASSIGN                                                   !3, ~7
    6     5        SUB                                              ~9      255, !1
          6        ASSIGN                                                   !4, ~9
    7     7        SUB                                              ~11     255, !2
          8        ASSIGN                                                   !5, ~11
    9     9        INIT_FCALL                                               'min'
         10        SEND_VAR                                                 !3
         11        SEND_VAR                                                 !4
         12        SEND_VAR                                                 !5
         13        DO_ICALL                                         $13     
         14        ASSIGN                                                   !2, $13
   11    15        INIT_FCALL                                               'round'
         16        SUB                                              ~15     !3, !2
         17        SUB                                              ~16     255, !2
         18        DIV                                              ~17     ~15, ~16
         19        SEND_VAL                                                 ~17
         20        DO_ICALL                                         $18     
         21        ASSIGN                                                   !3, $18
   12    22        INIT_FCALL                                               'round'
         23        SUB                                              ~20     !4, !2
         24        SUB                                              ~21     255, !2
         25        DIV                                              ~22     ~20, ~21
         26        SEND_VAL                                                 ~22
         27        DO_ICALL                                         $23     
         28        ASSIGN                                                   !4, $23
   13    29        INIT_FCALL                                               'round'
         30        SUB                                              ~25     !5, !2
         31        SUB                                              ~26     255, !2
         32        DIV                                              ~27     ~25, ~26
         33        SEND_VAL                                                 ~27
         34        DO_ICALL                                         $28     
         35        ASSIGN                                                   !5, $28
   14    36        INIT_FCALL                                               'round'
         37        DIV                                              ~30     !2, 255
         38        SEND_VAL                                                 ~30
         39        DO_ICALL                                         $31     
         40        ASSIGN                                                   !6, $31
   16    41        INIT_ARRAY                                       ~33     !3
         42        ADD_ARRAY_ELEMENT                                ~33     !4
         43        ADD_ARRAY_ELEMENT                                ~33     !5
         44        ADD_ARRAY_ELEMENT                                ~33     !6
         45      > RETURN                                                   ~33
   17    46*     > RETURN                                                   null

End of function rgb2cmyk

Function cmyk2rgb:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/F7tOX
function name:  cmyk2rgb
number of ops:  36
compiled vars:  !0 = $c, !1 = $m, !2 = $y, !3 = $k, !4 = $r, !5 = $g, !6 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   19     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
          3        RECV                                             !3      
   21     4        INIT_FCALL                                               'round'
          5        MUL                                              ~7      !0, !3
          6        SUB                                              ~8      !0, ~7
          7        SUB                                              ~9      ~8, !3
          8        MUL                                              ~10     ~9, 255
          9        SEND_VAL                                                 ~10
         10        DO_ICALL                                         $11     
         11        SUB                                              ~12     255, $11
         12        ASSIGN                                                   !4, ~12
   22    13        INIT_FCALL                                               'round'
         14        MUL                                              ~14     !1, !3
         15        SUB                                              ~15     !1, ~14
         16        SUB                                              ~16     ~15, !3
         17        MUL                                              ~17     ~16, 255
         18        SEND_VAL                                                 ~17
         19        DO_ICALL                                         $18     
         20        SUB                                              ~19     255, $18
         21        ASSIGN                                                   !5, ~19
   23    22        INIT_FCALL                                               'round'
         23        MUL                                              ~21     !2, !3
         24        SUB                                              ~22     !2, ~21
         25        SUB                                              ~23     ~22, !3
         26        MUL                                              ~24     ~23, 255
         27        SEND_VAL                                                 ~24
         28        DO_ICALL                                         $25     
         29        SUB                                              ~26     255, $25
         30        ASSIGN                                                   !6, ~26
   25    31        INIT_ARRAY                                       ~28     !4
         32        ADD_ARRAY_ELEMENT                                ~28     !5
         33        ADD_ARRAY_ELEMENT                                ~28     !6
         34      > RETURN                                                   ~28
   26    35*     > RETURN                                                   null

End of function cmyk2rgb

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
157.19 ms | 1402 KiB | 21 Q