diff --git a/rgb2ycbcr.m b/rgb2ycbcr.m
index e227c281fbc197fb960a860ad9d8e6523087076b..c173a302542e0e2c2b46b2cf753575099555a7a3 100644
--- a/rgb2ycbcr.m
+++ b/rgb2ycbcr.m
@@ -1 +1 @@
-% Author :  Hadi Amirpour 
% email  :  hadi.amirpour@gmail.com
% Copyright(c) EmergIMG,
%              Universidade da Beira Interior

% script for RGB 444 to YCbCr 444 color space conversion in n bits
% Input: 
        % 1-rgb   ---> RGB image in double format
        % 2-n     ---> number of the bits, this number should be either 8 or 10

% Output: 
        % 1-ycbcr ---> YCbCr image in n bits
% Modified by Elian Dib (elian.dib@inria.fr) on October, 18th 2018

function [ycbcr] = rgb2ycbcr(rgb,n)

%  Recommendation ITU-R BT.709-6
M = [ 0.212600   0.715200  0.072200 ;
     -0.114572  -0.385428  0.500000 ;
      0.500000  -0.454153 -0.045847];
  
if (nargin < 2)
    n = 8;
end

ycbcr        = reshape(double(rgb), [], 3) * M';
ycbcr(:,1)   = (219*ycbcr(:,1)+16)*2^(n-8); %Luminance
ycbcr(:,2:3) = (224*ycbcr(:,2:3) + 128)*2^(n-8);
ycbcr        = reshape(ycbcr, size(rgb));

if(n==8)
    ycbcr = uint8(ycbcr);
elseif (n==10 || n==16)
    ycbcr = uint16(ycbcr);
else
    print('invalid bit depth')
end

end
\ No newline at end of file
+% Author :  Hadi Amirpour 
% email  :  hadi.amirpour@gmail.com
% Copyright(c) EmergIMG,
%              Universidade da Beira Interior

% script for RGB 444 to YCbCr 444 color space conversion in n bits
% Input: 
        % 1-rgb   ---> RGB image in double format
        % 2-n     ---> number of the bits, this number should be either 8 or 10

% Output: 
        % 1-ycbcr ---> YCbCr image in n bits
% Modified by Elian Dib (elian.dib@inria.fr) on October, 18th 2018

function [ycbcr] = rgb2ycbcr(rgb,n,fullRange,conv2int)

%  Recommendation ITU-R BT.709-6
M = [ 0.212600   0.715200  0.072200 ;
     -0.114572  -0.385428  0.500000 ;
      0.500000  -0.454153 -0.045847];
  
if (nargin < 2)
    if isinteger(rgb)
    [~,n] = utils.precision(class(rgb));
    else
        n = 0;
    end
end

if (nargin < 3)
    fullRange = true;
end

if (nargin < 4)
    if isinteger(rgb)
        conv2int = true;
    else
        conv2int = false;
    end
end

if isinteger(rgb)
    rgb = double(rgb)./double(intmax(class(rgb)));
end

if fullRange
    offsetY = 0;
    scaleY = 255;
    offsetC = 128;
    scaleC = 255;
else
    offsetY = 16;
    scaleY = 219;    
    offsetC = 128;
    scaleC = 224;
end

ycbcr        = reshape(double(rgb), [], 3) * M';
ycbcr(:,1)   = (scaleY*ycbcr(:,1)   + offsetY)*2^(n-8);
ycbcr(:,2:3) = (scaleC*ycbcr(:,2:3) + offsetC)*2^(n-8);
ycbcr        = reshape(ycbcr, size(rgb));

if conv2int
    if(n<=8)
        ycbcr = uint8(ycbcr);
    elseif (n<=16)
        ycbcr = uint16(ycbcr);
    elseif (n<=32)
        ycbcr = uint32(ycbcr);
    elseif (n<=64)
        ycbcr = uint64(ycbcr);
    else
        print('invalid bit depth')
    end
end
end
\ No newline at end of file
diff --git a/ycbcr2rgb.m b/ycbcr2rgb.m
index a1afbff8782a8e3b2425bb6f3afd35b68d6bdc81..6e08ab61f0398df0950bda8064d60743a98856e6 100644
--- a/ycbcr2rgb.m
+++ b/ycbcr2rgb.m
@@ -1 +1 @@
-% Created by Elian Dib (elian.dib@inria.fr) on October, 18th 2018
function [rgb] = ycbcr2rgb(ycbcr,n)

%  Recommendation ITU-R BT.709-6
M = [ 1.000000   0.000000  1.574800 ;
      1.000000  -0.187350 -0.468130 ;
      1.000000   1.855630  0.000000];

if (nargin < 2)
    n = 8;
end

sz           = size(ycbcr);
ycbcr        = double(ycbcr);
ycbcr        = reshape(ycbcr, [], 3);
ycbcr(:,1)   = (ycbcr(:,1)-16*2^(n-8))/(219*2^(n-8)); %Luminance
ycbcr(:,2:3) = (ycbcr(:,2:3)-128*2^(n-8))/(224*2^(n-8));
rgb          = ycbcr * M';
rgb          = reshape(rgb, sz);

end
\ No newline at end of file
+% Created by Elian Dib (elian.dib@inria.fr) on October, 18th 2018
function [rgb] = ycbcr2rgb(ycbcr,n,fullRange,conv2int)

%  Recommendation ITU-R BT.709-6
M = [ 1.000000   0.000000  1.574800 ;
      1.000000  -0.187350 -0.468130 ;
      1.000000   1.855630  0.000000];

if (nargin < 2)
    if isinteger(ycbcr)
    [~,n] = utils.precision(class(ycbcr));
    else
        n = 0;
    end
end

if (nargin < 3)
    fullRange = true;
end

if (nargin < 4)
    if isinteger(ycbcr)
        conv2int = true;
    else
        conv2int = false;
    end
end

if fullRange
    offsetY = 0;
    scaleY = 255;
    offsetC = 128;
    scaleC = 255;
else
    offsetY = 16;
    scaleY = 219;    
    offsetC = 128;
    scaleC = 224;
end

sz           = size(ycbcr);
ycbcr        = double(ycbcr);
ycbcr        = reshape(ycbcr, [], 3);
ycbcr(:,1)   = (ycbcr(:,1)  -offsetY*2^(n-8))/(scaleY*2^(n-8));
ycbcr(:,2:3) = (ycbcr(:,2:3)-offsetC*2^(n-8))/(scaleC*2^(n-8));
rgb          = ycbcr * M';
rgb          = reshape(rgb, sz);

if conv2int
    rgb = (2^n-1)*rgb;
    if(n<=8)
        rgb = uint8(rgb);
    elseif (n<=16)
        rgb = uint16(rgb);
    elseif (n<=32)
        rgb = uint32(rgb);
    elseif (n<=64)
        rgb = uint64(rgb);
    else
        print('invalid bit depth')
    end
end
end
\ No newline at end of file