hls to rgb php

function HLStoRGB( $h, $l, $s ) {
if ( $s == 0 ){
$r = $l * 255;
$g = $l * 255;
$b = $l * 255;
} else {
if ( $l < 0.5 ) $m2 = $l * ( 1 + $s );
else $m2 = ( $l + $s ) - ( $s * $l );

$m1 = 2 * $l - $m2;

$r = 255 * hue2rgb( $m1, $m2, $h + ( 1 / 3 ) );
$g = 255 * hue2rgb( $m1, $m2, $h );
$b = 255 * hue2rgb( $m1, $m2, $h - ( 1 / 3 ) );
return array( $r, $g, $b );
}
}
function hue2rgb($m1, $m2, $h) {
if ( $h < 0 ) $h += 1;
if ( $h > 1 ) $h -= 1;
if ( ( 6 * $h ) < 1 ) return ( $m1 + ( $m2 - $m1 ) * 6 * $h );
if ( ( 2 * $h ) < 1 ) return ( $m2 );
if ( ( 3 * $h ) < 2 ) return ( $m1 + ( $m2 - $m1 ) * ( ( 2 / 3 ) - $h ) * 6 );
return ( $m1 );
}

rgb to hls php

function RGBtoHLS( $r, $g, $b ) {
    $r = $r / 255;
    $g = $g / 255;
    $b = $b / 255;
   
    $min = min( $r, $g, $b );
    $max = max( $r, $g, $b );
   
    $l = ($max + $min) / 2;

    if ($max == $min) {
        $s = 0;
        $h = 0;
    } else {
        if ($l < 0.5)  $s =($max-$min)/($max+$min);
        if ($l >=0.5)  $s =($max-$min)/(2.0-$max-$min);  
    }
   
    if ($r == $max) $h = ($g-$b)/($max-$min);
    if ($g == $max) $h = 2.0 + (($b-$r)/($max-$min));
    if ($b == $max) $h = 4.0 + (($r-$g)/($max-$min));
 
    $h = $h/6;
   
    return array( $h, $l, $s );
}

hsv to rgb php

function HSVtoRGB( $h, $s, $v )
{
if ( $s == 0 ) {
$r = $g = $b = $v;
return;
}

$h /= 60;
$i = floor( $h );
$f = $h - $i;
$p = $v * ( 1 - $s );
$q = $v * ( 1 - $s * $f );
$t = $v * ( 1 - $s * ( 1 - $f ) );

switch( $i ) {
case 0:
$r = $v;
$g = $t;
$b = $p;
break;
case 1:
$r = $q;
$g = $v;
$b = $p;
break;
case 2:
$r = $p;
$g = $v;
$b = $t;
break;
case 3:
$r = $p;
$g = $q;
$b = $v;
break;
case 4:
$r = $t;
$g = $p;
$b = $v;
break;
default:
$r = $v;
$g = $p;
$b = $q;
break;
}
return array( $r*255, $g*255, $b*255 );
}

rgb to hsv php

function RGBtoHSV( $r, $g, $b ) {
$r = $r / 255;
$g = $g / 255;
$b = $b / 255;

$min = min( $r, $g, $b );
$max = max( $r, $g, $b );
$v = $max;

$delta = $max - $min;

if( $max != 0 )
$s = $delta / $max;
else {
$s = 0;
$h = -1;
return;
}

if ( $r == $max )
$h = ( $g - $b ) / $delta;
else if ( $g == $max )
$h = 2 + ( $b - $r ) / $delta;
else
$h = 4 + ( $r - $g ) / $delta;

$h *= 60;
if( $h < 0 )
$h += 360;

return array( $h, $s, $v );
}

Bubblesort amd64 nasm

; nasm -f elf64 bubble.asm && gcc bubble.o -o bubble && ./bubble

extern printf

section .text
global main

main:
call printStr
call sortStr
call printStr

mov eax,1
syscall
ret

printStr:
enter 64, 0
push rbx
push rcx
push rdi
push rsi
push rax
mov rdx, rcx
mov rdi, fmt
mov rsi, msg
mov rax, 0
call printf
pop rax
pop rsi
pop rdi
pop rcx
pop rbx
leave
ret

sortStr:
enter 64, 0

mov rbx, msg
mov rsi, 0
mov rdi, 40

do:
call printStr
xor rcx,rcx
xor rsi,rsi
for:
mov al, [rbx+rsi]
mov ah, [rbx+rsi+1]
cmp al,ah
jb skip

mov dl,al
mov al,ah
mov ah,dl
mov [rbx+rsi], ax
mov rcx, 1


skip:
inc rsi
cmp rsi,12
jb for

cmp rdi,0
je exit
dec rdi

cmp rcx,1
je do
exit:
leave
ret

section .data

msg db 'Hello, world!',0
fmt db '%s%d',10,0