diff --git a/getRange.m b/getRange.m
index 7557f33fec71c51d87d295d9d9d07b181972c3b3..af3400fba96c0ec24412a7a29a2d918a169a78c8 100644
--- a/getRange.m
+++ b/getRange.m
@@ -1,17 +1,16 @@
-function [range,nbits,castTypename] = getRange(typename)
+function [range,nbits,casttypename] = getRange(typename)
 %GETRANGE Summary of this function goes here
 %   Detailed explanation goes here
 
-[type,nbits,castTypename] = utils.precision(typename);
+[typename,nbits,casttypename] = utils.precision(typename);
 
-switch type
+switch typename
     case {'ubit','uint'}
         range = [0 2^nbits-1];
-    case {'bit','int'}
+    case { 'bit', 'int'}
         range = [-2^(nbits-1) 2^(nbits-1)-1];
     otherwise
         range = [0 1];
 end
 
-end
-
+end
\ No newline at end of file
diff --git a/normMat.m b/normalize.m
similarity index 54%
rename from normMat.m
rename to normalize.m
index f229072116ec1d642d34fe37f0adb41b34ad0489..86fa2526759da29bf50c3ecc0382155d0e44ff9e 100644
--- a/normMat.m
+++ b/normalize.m
@@ -1,5 +1,5 @@
-function [A,rA] = normMat(A)
-%NORMMAT Summary of this function goes here
+function [A,rA] = normalize(A)
+%NORMALIZE Summary of this function goes here
 %   Detailed explanation goes here
 
 rA = [min(A(:)) max(A(:))];
diff --git a/precision.m b/precision.m
index 4dba3eea985140200ae268b699e62f5f2f5332f5..56c54c59f151604137bcd280e3983ea689d8893a 100644
--- a/precision.m
+++ b/precision.m
@@ -1,61 +1,36 @@
-function [type,nbits,castTypename] = precision(typename)
+function [typename,nbits,casttypename,castnbits] = precision(typename)
 %PRECISION Summary of this function goes here
 %   Detailed explanation goes here
 
-types = {'bit','ubit','int','uint','float','single','double'};
-expression = '\D+';
+expression = '(?<type>\D+)(?<nbits>\d*)';
 
-[type,nbits] = regexp(typename,expression,'match','split');
+names = regexp(typename,expression,'names');
+
+typename = names.type;
+nbits = str2double(names.nbits);
 
-type = type{1};
-nbits = str2double(nbits{2});
 if isnan(nbits)
-    switch type
-        case {'bit','ubit','int','uint'}
-            nbits = 8;
+    switch typename
         case {'float','single'}
             nbits = 32;
         case 'double'
             nbits = 64;
+        otherwise
+            error('Incorrect input type');
     end
 end
 
-switch type
-    case {'bit','ubit'}
-        allowed = 1:64;
-    case {'int','uint'}
-        allowed = 2.^(3:6);
-    case 'float'
-        allowed = [32,64];
-    case 'single'
-        allowed = 32;
-    case 'double'
-        allowed = 64;
-    otherwise
-        error('Unexpected type');
-end
-
-allowed = allowed(allowed>=nbits);
-nbits = allowed(1);
-
-p = inputParser;
-p.addRequired('type' ,@(type) any(strcmp(type,types)) );
-p.addRequired('nbits',@(n) isscalar(n)&n>=1&n<=64     );
-
-p.parse(type,nbits);
-
-allowed = 2.^(3:6);
-allowed = allowed(allowed>=nbits);
-castNbits = allowed(1);
-
-castTypename = typename;
-
-switch type
-    case { 'bit'}
-        castTypename = [ 'int',num2str(castNbits)];
-    case {'ubit'}
-        castTypename = ['uint',num2str(castNbits)];
-end
+integernbits = [8,16,32,64];
+integernbits = integernbits(integernbits>=nbits);
+castnbits = num2str(integernbits(1));
 
+switch typename
+    case {'ubit','uint'}
+        casttypename = ['uint',castnbits];
+    case { 'bit', 'int'}
+        casttypename = [ 'int',castnbits];
+    otherwise
+        casttypename = typename;
 end
 
+end
\ No newline at end of file
diff --git a/recast.m b/recast.m
index e0cdcd57406372fc386fdf4a98cf8e9077473116..9cb12b61140853d0675bc90f530667a6857d1bc0 100644
--- a/recast.m
+++ b/recast.m
@@ -3,8 +3,8 @@ function outMat = recast(inMat,varargin)
 %   Detailed explanation goes here
 
 p = inputParser;
-p.addOptional('outTypename','double'    ,@ischar);
-p.addOptional( 'inTypename',class(inMat),@ischar);
+p.addOptional('outTypename', class(inMat), @ischar);
+p.addOptional( 'inTypename', class(inMat), @ischar);
 
 p.parse(varargin{:});
 
@@ -14,5 +14,7 @@ outTypename = p.Results.outTypename;
   inRange                = utils.getRange( inTypename);
 [outRange,~,outTypename] = utils.getRange(outTypename);
 
-outMat = cast(outRange(1)+diff(outRange)*(double(inMat)-inRange(1))/diff(inRange),outTypename);
-end
+outMat = outRange(1)+diff(outRange)*(double(inMat)-inRange(1))/diff(inRange);
+outMat = cast(outMat,outTypename);
+
+end
\ No newline at end of file