add 'dec2base' function and optimize dec2bin, dec2oct, dec2hex functions. 73/5673/5
Allan CORNET [Wed, 14 Dec 2011 13:22:54 +0000 (14:22 +0100)]
SEP 74

Change-Id: I9f5c44b8827953414212bb9abbaa52c01c14f839

20 files changed:
SEP/INDEX
SEP/SEP_075_dec2base.odt [new file with mode: 0644]
scilab/CHANGES_5.4.X
scilab/modules/elementary_functions/Makefile.am
scilab/modules/elementary_functions/Makefile.in
scilab/modules/elementary_functions/help/en_US/integer_representation/dec2base.xml [new file with mode: 0644]
scilab/modules/elementary_functions/includes/gw_elementary_functions.h
scilab/modules/elementary_functions/macros/dec2bin.sci
scilab/modules/elementary_functions/macros/dec2hex.sci
scilab/modules/elementary_functions/macros/dec2oct.sci
scilab/modules/elementary_functions/sci_gateway/c/gw_elementary_functions.c
scilab/modules/elementary_functions/sci_gateway/c/sci_base2dec.c
scilab/modules/elementary_functions/sci_gateway/c/sci_dec2base.c [new file with mode: 0644]
scilab/modules/elementary_functions/sci_gateway/elementary_functions_gateway.xml
scilab/modules/elementary_functions/src/c/convertbase.c
scilab/modules/elementary_functions/src/c/convertbase.h
scilab/modules/elementary_functions/src/c/elementary_functions.vcxproj
scilab/modules/elementary_functions/src/c/elementary_functions.vcxproj.filters
scilab/modules/elementary_functions/tests/unit_tests/dec2base.dia.ref [new file with mode: 0644]
scilab/modules/elementary_functions/tests/unit_tests/dec2base.tst [new file with mode: 0644]

index 7982af7..cd718f8 100644 (file)
--- a/SEP/INDEX
+++ b/SEP/INDEX
@@ -70,4 +70,5 @@ SEP #070: Xcos validation functions
 SEP #071: Modify atomsRemove to delete tarball
 SEP #072: Extend fullpath to manage matrix of string as input argument
 SEP #073: New convolution functions
-SEP #074: Atoms configuration files management
\ No newline at end of file
+SEP #074: Atoms configuration files management
+SEP #075: New dec2base function
diff --git a/SEP/SEP_075_dec2base.odt b/SEP/SEP_075_dec2base.odt
new file mode 100644 (file)
index 0000000..0e35828
Binary files /dev/null and b/SEP/SEP_075_dec2base.odt differ
index 3306f82..572bb44 100644 (file)
@@ -87,6 +87,8 @@ Xcos
 Elementary functions
 ====================
 
+* dec2base function added (See SEP #75).
+
 * linspace deprecates the usage of non integer values as third input argument.
 
 * logspace deprecates the usage of non integer values as third input argument.
@@ -155,6 +157,7 @@ Compilation
 
 * "make check" will now launch the most important unitary tests (level 1).
 
+
 Bug fixes
 =========
 
@@ -165,6 +168,9 @@ Bug fixes
 
 * Bug #8050 fixed - A weird error message was displayed in some cases.
 
+* Bug #8608 fixed - dec2hex, hex2dec, dec2oct, oct2dec, base2dec code have been
+                    simplified and optimized.
+
 * Bug #8682 fixed - funcprot did not return the previous value when called with
                     an argument.
 
index e56b8a7..bfe4738 100644 (file)
@@ -306,7 +306,8 @@ sci_gateway/c/sci_exp.c \
 sci_gateway/c/sci_maxi.c \
 sci_gateway/c/sci_gsort.c \
 sci_gateway/c/sci_isequalbitwise.c \
-sci_gateway/c/sci_base2dec.c
+sci_gateway/c/sci_base2dec.c \
+sci_gateway/c/sci_dec2base.c
 
 GATEWAY_FORTRAN_SOURCES =  sci_gateway/fortran/sci_f_isequal.f \
 sci_gateway/fortran/sci_f_maxi.f \
index ded14f4..7c4a952 100644 (file)
@@ -247,7 +247,8 @@ am__objects_7 = libscielementary_functions_la-sci_isequal.lo \
        libscielementary_functions_la-sci_maxi.lo \
        libscielementary_functions_la-sci_gsort.lo \
        libscielementary_functions_la-sci_isequalbitwise.lo \
-       libscielementary_functions_la-sci_base2dec.lo
+       libscielementary_functions_la-sci_base2dec.lo \
+       libscielementary_functions_la-sci_dec2base.lo
 am__objects_8 = libscielementary_functions_la-sci_f_isequal.lo \
        libscielementary_functions_la-sci_f_maxi.lo \
        libscielementary_functions_la-sci_f_testmatrix.lo \
@@ -891,7 +892,8 @@ sci_gateway/c/sci_exp.c \
 sci_gateway/c/sci_maxi.c \
 sci_gateway/c/sci_gsort.c \
 sci_gateway/c/sci_isequalbitwise.c \
-sci_gateway/c/sci_base2dec.c
+sci_gateway/c/sci_base2dec.c \
+sci_gateway/c/sci_dec2base.c
 
 GATEWAY_FORTRAN_SOURCES = sci_gateway/fortran/sci_f_isequal.f \
 sci_gateway/fortran/sci_f_maxi.f \
@@ -1189,6 +1191,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_cos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_cumprod.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_cumsum.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_dec2base.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_diag.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_dsearch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscielementary_functions_la-sci_exp.Plo@am__quote@
@@ -1760,6 +1763,13 @@ libscielementary_functions_la-sci_base2dec.lo: sci_gateway/c/sci_base2dec.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscielementary_functions_la_CPPFLAGS) $(CPPFLAGS) $(libscielementary_functions_la_CFLAGS) $(CFLAGS) -c -o libscielementary_functions_la-sci_base2dec.lo `test -f 'sci_gateway/c/sci_base2dec.c' || echo '$(srcdir)/'`sci_gateway/c/sci_base2dec.c
 
+libscielementary_functions_la-sci_dec2base.lo: sci_gateway/c/sci_dec2base.c
+@am__fastdepCC_TRUE@   $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscielementary_functions_la_CPPFLAGS) $(CPPFLAGS) $(libscielementary_functions_la_CFLAGS) $(CFLAGS) -MT libscielementary_functions_la-sci_dec2base.lo -MD -MP -MF $(DEPDIR)/libscielementary_functions_la-sci_dec2base.Tpo -c -o libscielementary_functions_la-sci_dec2base.lo `test -f 'sci_gateway/c/sci_dec2base.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dec2base.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/libscielementary_functions_la-sci_dec2base.Tpo $(DEPDIR)/libscielementary_functions_la-sci_dec2base.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_dec2base.c' object='libscielementary_functions_la-sci_dec2base.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscielementary_functions_la_CPPFLAGS) $(CPPFLAGS) $(libscielementary_functions_la_CFLAGS) $(CFLAGS) -c -o libscielementary_functions_la-sci_dec2base.lo `test -f 'sci_gateway/c/sci_dec2base.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dec2base.c
+
 .f.o:
        $(F77COMPILE) -c -o $@ $<
 
diff --git a/scilab/modules/elementary_functions/help/en_US/integer_representation/dec2base.xml b/scilab/modules/elementary_functions/help/en_US/integer_representation/dec2base.xml
new file mode 100644 (file)
index 0000000..a9ed190
--- /dev/null
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ -->
+<refentry version="5.0-subset Scilab" xml:id="dec2base" xml:lang="en"
+          xmlns="http://docbook.org/ns/docbook"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg"
+          xmlns:ns5="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook">
+  <info>
+    <pubdate>$LastChangedDate: 2006-09-10 20:58:00 +0200 (Sun, 10 Sep 2006)
+    $</pubdate>
+  </info>
+
+  <refnamediv>
+    <refname>dec2base</refname>
+
+    <refpurpose>Convert decimal to base N number in string</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <title>Calling Sequence</title>
+
+    <synopsis>str = dec2base(d, base)</synopsis>
+    <synopsis>str = dec2basedec2base(d, base, n)</synopsis>
+  </refsynopsisdiv>
+
+  <refsection>
+    <title>Arguments</title>
+
+    <variablelist>
+      <varlistentry>
+        <term>str</term>
+
+        <listitem>
+          <para>matrix of strings corresponding to "base" representation</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>base</term>
+
+        <listitem>
+          <para>1-by-1 matrix of doubles, positive integer value, the base</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>d</term>
+
+        <listitem>
+          <para>matrix of doubles, positive integer values</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+  </refsection>
+
+  <refsection>
+    <title>Description</title>
+
+    <para><literal>str = dec2base(d, base)</literal> converts the nonnegative integer d to the specified base <literal>base</literal>.</para>
+    <para><literal>d</literal> must be a nonnegative integer smaller than 2^52, and <literal>base</literal> must be an integer between 2 and 36.</para>
+    <para>The returned argument <literal>str</literal> is a string.</para>
+    <para><literal>str = dec2base(d, base, n)</literal> produces a representation with at least n digits.</para>
+    
+  </refsection>
+
+  <refsection>
+    <title>Examples</title>
+
+    <programlisting role="example"><![CDATA[ 
+for b = 2:36
+ disp( dec2base(666, b) )
+end 
+ ]]></programlisting>
+  </refsection>
+
+  <refsection role="see also">
+<title>See Also</title>
+
+    <simplelist type="inline">
+      
+      <member><link linkend="base2dec">base2dec</link></member>
+      
+      <member><link linkend="bin2dec">bin2dec</link></member>
+
+      <member><link linkend="oct2dec">oct2dec</link></member>
+
+      <member><link linkend="hex2dec">hex2dec</link></member>
+
+      <member><link linkend="dec2bin">dec2bin</link></member>
+
+      <member><link linkend="dec2oct">dec2oct</link></member>
+
+      <member><link linkend="dec2hex">dec2hex</link></member>
+    </simplelist>
+  </refsection>
+  <refsection>
+    <title>History</title>
+    <revhistory>
+      <revision>
+        <revnumber>5.4.0</revnumber>
+        <revremark>This function was added in Scilab 5.4.0</revremark>
+      </revision>
+    </revhistory>
+  </refsection>      
+</refentry>
index 231995d..0cd8032 100644 (file)
@@ -68,6 +68,7 @@ int sci_gsort(char *fname, unsigned long fname_len);
 int sci_isequalbitwise(char *fname, unsigned long fname_len);
 int sci_rat(char *fname, unsigned long fname_len);
 int sci_base2dec(char *fname, unsigned long fname_len);
+int sci_dec2base(char *fname, unsigned long fname_len);
 #endif /*  __GW_ELEMENTARIES_FUNCTIONS__ */
 /*--------------------------------------------------------------------------*/
 
index c682b02..77c085f 100644 (file)
@@ -1,5 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) INRIA - Farid BELAHCENE
+// Copyright (C) DIGITEO - 2011 - Farid BELAHCENE
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
 //
 // =============================================================================
 
-function y=dec2bin(x,n)
-       
-       rhs = argn(2);
-       
-       // check the number of input arguments
-       if (rhs<1 | rhs>2) then
-               error(msprintf(gettext("%s: Wrong number of input argument(s): %d or %d expected.\n"),"dec2bin",1,2));
-       end
-       
-       // check type and size of the input arguments
-       if or(type(x)<>8) & (or(type(x)<>1) | or(x<0)) then
-               error(msprintf(gettext("%s: Wrong value for input argument #%d: Scalar/vector/matrix of positive integers expected.\n"),"dec2bin",1));
-       end
-       
-       if rhs==2 & ((type(n)<>8 & (type(n)<>1 | n<0)) | prod(size(n))<>1) then
-               error(msprintf(gettext("%s: Wrong value for input argument #%d: A positive integer expected"),"dec2bin",2));
-       end
-       
-       // empty matrix
-       if x==[]
-               y=string([]);
-               return;
-       end
-       
-       [nr,nc] = size(x);
-       x=x(:);
-       
-       // input argument is a scalar/vector/matrix of zeros
-       
-       if and(x==0)
-               if rhs==2
-                       y = strcat(string(zeros(1:n))) + emptystr(nr,nc);
-               else
-                       y = "0" + emptystr(nr,nc);
-               end
-               return
-       end
-       
-       // for x=25, pow=[4 3 0], because x=2^4+2^3+2^0
-       // for x=23, pow=[4 2 1 0] because x=2^4+2^2+2^1+2^0
-       // for x=[25 23]
-       // pow=[4 3 0 -1
-       //      4 2 1 0];
-       
-       while find(x>0)<>[]
-               pow(x>0,$+1) = floor(log2(double(x(x>0))));
-               pow(x<=0,$)  = -1;
-               x(x>0)       = floor(x(x>0)-2^pow(x>0,$));
-       end
-       
-       pow   = pow+1;
-       ytemp = zeros(size(pow,1),size(pow,2));
-       
-       for i=1:size(ytemp,1)
-               ind          = pow(i,pow(i,:)>=1);
-               ytemp(i,ind) = 1;
-       end
-       
-       if rhs==2
-               for i=1:size(ytemp,1)
-                       y(i)=strcat(string([zeros(1,round(n-size(ytemp,2))) ytemp(i,size(ytemp,2):-1:1)]));
-               end
-       else
-               for i=1:size(ytemp,1)
-                       y(i)=strcat(string(ytemp(i,size(ytemp,2):-1:1)));
-               end
-       end
-       
-       y = matrix(y,nr,nc);
-       
+function y = dec2bin(x, n)
+  rhs = argn(2);
+
+  // check the number of input arguments
+  if (rhs < 1 | rhs > 2) then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d or %d expected.\n"), "dec2bin", 1, 2));
+  end
+
+  if rhs == 2 then
+    y = dec2base(double(x), 2, n);
+  else
+    y = dec2base(double(x), 2);
+  end
 endfunction
+
index f2c0e57..c500095 100644 (file)
@@ -1,6 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) INRIA
-// Copyright (C) DIGITEO - 2010 - Allan CORNET
+// Copyright (C) DIGITEO - 2010-2011 - Allan CORNET
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
@@ -21,19 +21,9 @@ function h = dec2hex(v)
 
   // check the number of input arguments
   if rhs <> 1 then
-    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"dec2hex",1));
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "dec2hex", 1));
   end
 
-  [nr, nc] = size(v);
-
-  if (find(v<0) <> []) | (norm(round(v)-v,1) > norm(round(v),1)*2*%eps) then
-    error(msprintf(gettext("%s: Wrong value for input argument #%d: Non-negative integer matrix expected.\n"),"dec2hex",1));
-  end
-
-  h = [];
-  for ii = 1:size(v,'*')
-    h(ii) = msprintf("%X", v(ii));
-  end
-  h = matrix(h, nr, nc);
+  h = dec2base(double(v), 16);
 
 endfunction
index 053415d..fc9008f 100644 (file)
@@ -1,6 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) INRIA - Pierre MARECHAL
-// Copyright (C) DIGITEO - 2010 - Allan CORNET
+// Copyright (C) DIGITEO - 2010-2011 - Allan CORNET
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
@@ -18,19 +18,13 @@ function y = dec2oct(x)
 
   // check the number of input arguments
   if rhs <> 1 then
-    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"dec2oct",1));
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "dec2oct", 1));
   end
 
   if or(type(x) <> 8) & (or(type(x) <> 1) | or(x < 0) ) then
-    error(msprintf(gettext("%s: Wrong value for input argument #%d: Scalar/vector/matrix of positive integers expected.\n"),"dec2oct",1));
+    error(msprintf(gettext("%s: Wrong value for input argument #%d: Scalar/vector/matrix of positive integers expected.\n"), "dec2oct", 1));
   end
 
-  [nr, nc] = size(x);
-
-  y = [];
-  for ii = 1:size(x, '*')
-    y(ii) =  msprintf("%o", x(ii));
-  end
-  y = matrix(y, nr, nc);
+  y = dec2base(double(x), 8);
 
 endfunction
index ed64b7c..f02d1ed 100644 (file)
@@ -70,6 +70,7 @@ static gw_generic_table Tab[] =
        {sci_isequalbitwise, "isequalbitwise"},
     {sci_rat, "rat"},
     {sci_base2dec, "base2dec"},
+    {sci_dec2base, "dec2base"}
 };
 /*--------------------------------------------------------------------------*/
 int gw_elementary_functions(void)
index cd3b93d..694554e 100644 (file)
@@ -106,9 +106,9 @@ int sci_base2dec(char *fname,unsigned long fname_len)
 
     for (i = 0; i < m * n; i++)
     {
-        int ierr = 0;
-        dResults[i] = convertBase2Dec(pStrs[i], iValue, &ierr);
-        if (ierr)
+        error_convertbase err = ERROR_CONVERTBASE_NOK;
+        dResults[i] = convertBase2Dec(pStrs[i], iValue, &err);
+        if (err != ERROR_CONVERTBASE_OK)
         {
             freeAllocatedMatrixOfString(m, n, pStrs);
             pStrs = NULL;
diff --git a/scilab/modules/elementary_functions/sci_gateway/c/sci_dec2base.c b/scilab/modules/elementary_functions/sci_gateway/c/sci_dec2base.c
new file mode 100644 (file)
index 0000000..747c3a8
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+/*--------------------------------------------------------------------------*/ 
+#include <math.h>
+#include "gw_elementary_functions.h"
+#include "MALLOC.h"
+#include "api_scilab.h"
+#include "stack-c.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "convertbase.h"
+#include "freeArrayOfString.h"
+/*--------------------------------------------------------------------------*/
+int sci_dec2base(char *fname, unsigned long fname_len)
+{
+    SciErr sciErr;
+    int *piAddressVarOne = NULL;
+    int *piAddressVarTwo = NULL;
+    int m = 0, n = 0;
+    int i = 0;
+
+    double *dValues = NULL;
+    char **convertedValues = NULL;
+    unsigned int iBaseUsed = 0;
+    double dBaseUsed = 0.;
+    unsigned int nbDigits = 0;
+    error_convertbase err = ERROR_CONVERTBASE_NOK;
+
+    CheckRhs(2, 3);
+    CheckLhs(1, 1);
+
+    if (Rhs == 3)
+    {
+        double dParamThree = 0.;
+        unsigned int iParamThree = 0;
+        int *piAddressVarThree = NULL;
+        sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddressVarThree);
+        if(sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 3);
+            return 0;
+        }
+
+        if (!isDoubleType(pvApiCtx, piAddressVarThree))
+        {
+             Scierror(999,_("%s: Wrong type for input argument #%d: A scalar integer value expected.\n"), fname, 3);
+             return 0;
+        }
+
+        if (!isScalar(pvApiCtx, piAddressVarThree))
+        {
+            Scierror(999,_("%s: Wrong size for input argument #%d: A scalar integer value expected.\n"), fname, 3);
+            return 0;
+        }
+
+        if (getScalarDouble(pvApiCtx, piAddressVarThree, &dParamThree) != 0)
+        {
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+        }
+
+        iParamThree = (unsigned int)dParamThree;
+
+        if (dParamThree != (double)iParamThree)
+        {
+            Scierror(999,_("%s: Wrong value for input argument #%d: A integer value expected.\n"), fname, 3);
+            return 0;
+        }
+
+        nbDigits = iParamThree;
+    }
+
+    sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddressVarTwo);
+    if(sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 2);
+        return 0;
+    }
+
+    if (!isDoubleType(pvApiCtx, piAddressVarTwo))
+    {
+        Scierror(999,_("%s: Wrong type for input argument #%d: A integer value expected.\n"), fname, 2);
+        return 0;
+    }
+
+    if (!isScalar(pvApiCtx, piAddressVarTwo))
+    {
+        Scierror(999,_("%s: Wrong size for input argument #%d.\n"), fname, 2);
+        return 0;
+    }
+
+    if (getScalarDouble(pvApiCtx, piAddressVarTwo, &dBaseUsed) != 0)
+    {
+        Scierror(999, _("%s: No more memory.\n"), fname);
+        return 0;
+    }
+
+    iBaseUsed = (unsigned int)dBaseUsed;
+    if (dBaseUsed != (double)iBaseUsed)
+    {
+        Scierror(999, _("%s: Wrong value for input argument #%d: A integer value expected.\n"), fname, 2);
+        return 0;
+    }
+
+    if ((iBaseUsed < 2) && (iBaseUsed > 36))
+    {
+        Scierror(999, _("%s: Wrong value for input argument #%d: Must be between %d and %d."), fname, 2, 2, 36);
+        return 0;
+    }
+
+    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
+    if(sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+        return 0;
+    }
+
+    if (isEmptyMatrix(pvApiCtx, piAddressVarOne))
+    {
+        if (createEmptyMatrix(pvApiCtx, Rhs + 1) != 0)
+        {
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+        }
+        else
+        {
+            LhsVar(1) = Rhs + 1;
+            PutLhsVar();
+            return 0;
+        }
+    }
+
+    if (!isDoubleType(pvApiCtx, piAddressVarOne))
+    {
+        Scierror(999,_("%s: Wrong type for input argument #%d: A matrix of integer value expected.\n"), fname, 1);
+        return 0;
+    }
+
+    sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarOne, &m, &n , &dValues);
+    if(sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+        return 0;
+    }
+
+    convertedValues = (char **)MALLOC(sizeof(char*) * (m *n));
+    if (convertedValues == NULL)
+    {
+        Scierror(999, _("%s: No more memory.\n"), fname);
+        return 0;
+    }
+
+    convertedValues = convertMatrixOfDec2Base(dValues, m * n, iBaseUsed, nbDigits, &err);
+    if ((err != ERROR_CONVERTBASE_OK) || (convertedValues == NULL))
+    {
+        freeArrayOfString(convertedValues, m * n);
+        convertedValues = NULL;
+
+        switch (err)
+        {
+        case ERROR_CONVERTBASE_NOT_INTEGER_VALUE:
+            Scierror(999, _("%s: Wrong value for input argument #%d: Must be between 0 and 2^52.\n"), fname, 1);
+            return 0;
+
+        case ERROR_CONVERTBASE_NOT_IN_INTERVAL:
+            Scierror(999,_("%s: Wrong value(s) for input argument #%d: A matrix of positive integer values expected.\n"), fname, 1);
+            return 0;
+
+        case ERROR_CONVERTBASE_ALLOCATION:
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+
+        case ERROR_CONVERTBASE_NOK: default:
+            Scierror(999, _("%s: Wrong value for input argument #%d: cannot convert value(s).\n"), fname, 1);
+            return 0;
+        }
+    }
+
+    sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, m, n, convertedValues);
+    freeArrayOfString(convertedValues, m * n);
+    convertedValues = NULL;
+
+    if(sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        Scierror(999,_("%s: Memory allocation error.\n"), fname);
+        return 0;
+    }
+
+    LhsVar(1) = Rhs + 1;
+    PutLhsVar();
+
+    return 0;
+}
+/*--------------------------------------------------------------------------*/
index e19b416..9645bc5 100644 (file)
@@ -85,4 +85,5 @@
 <PRIMITIVE gatewayId="6" primitiveId="51" primitiveName="isequalbitwise" />
 <PRIMITIVE gatewayId="6" primitiveId="52" primitiveName="rat" />
 <PRIMITIVE gatewayId="6" primitiveId="53" primitiveName="base2dec" />
+<PRIMITIVE gatewayId="6" primitiveId="54" primitiveName="dec2base" />
 </GATEWAY>
index 3e05eb3..2297743 100644 (file)
  */
 /*--------------------------------------------------------------------------*/ 
 #include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include "convertbase.h"
+#include "MALLOC.h"
+#include "freeArrayOfString.h"
+#include "stack-def.h"
 /*--------------------------------------------------------------------------*/ 
 #define char_a 'a'
 #define char_A 'A'
 #define char_zero '0'
 #define char_nine '9'
 /*--------------------------------------------------------------------------*/ 
-double convertBase2Dec(const char *pStr, int numberbase, int *ierr)
+static char *convertDec2Base(double dValue, int numberbase,
+                             unsigned int nbDigits, error_convertbase *err);
+/*--------------------------------------------------------------------------*/ 
+double convertBase2Dec(const char *pStr, int numberbase, error_convertbase *err)
 {
     double result = 0.;
-    *ierr = 1;
+    *err = ERROR_CONVERTBASE_NOK;
 
     if (pStr)
     {
@@ -37,20 +46,187 @@ double convertBase2Dec(const char *pStr, int numberbase, int *ierr)
             }
             else if ((pStr[i] >= char_A) && (pStr[i] <= char_Z))
             {
-                result = (numberbase * result) + (int)pStr[i] - char_A + 10;
+                int vTmp = (int)pStr[i] - char_A + 10;
+                if (vTmp > numberbase)
+                {
+                    *err = ERROR_CONVERTBASE_INVALID_REPRESENTATION;
+                    return 0;
+                }
+                else
+                {
+                    result = (numberbase * result) + vTmp;
+                }
             }
             else if ((pStr[i] >= char_a) && (pStr[i] <= char_z))
             {
-                result = (numberbase * result) + (int)pStr[i] - char_a + 10;
+                int vTmp = (int)pStr[i] - char_a + 10;
+                if ( vTmp > numberbase)
+                {
+                    *err = ERROR_CONVERTBASE_INVALID_REPRESENTATION;
+                    return 0;
+                }
+                else
+                {
+                    result = (numberbase * result) + vTmp;
+                }
             }
             else
             {
-                *ierr = 1;
                 return 0;
             }
         }
-        *ierr = 0;
+        *err = ERROR_CONVERTBASE_OK;
     }
     return result;
 }
 /*--------------------------------------------------------------------------*/
+static char *convertDec2Base(double dValue, int numberbase,
+                            unsigned int nbDigits, error_convertbase *err)
+{
+    char symbols[37] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    long long int iDec = (long long int) dValue;
+    char *convertedValue = NULL;
+
+    *err = ERROR_CONVERTBASE_NOK;
+    if (iDec == 0)
+    {
+        convertedValue = (char*)MALLOC(sizeof(char));
+        if (convertedValue)
+        {
+            strcpy(convertedValue, "0");
+            *err = ERROR_CONVERTBASE_OK;
+        }
+        else
+        {
+            *err = ERROR_CONVERTBASE_ALLOCATION;
+            return NULL;
+        }
+    }
+    else
+    {
+        int count = 0;
+        char chResult[bsiz] = "";
+        char *pChResult = chResult;
+        while(iDec > 0 && count++ < bsiz)
+        {
+            *pChResult = symbols[iDec % numberbase];
+            pChResult++;
+            iDec = iDec / numberbase;
+        }
+
+        convertedValue = (char*)MALLOC(sizeof(char) * (strlen(chResult) + 1));
+        if (convertedValue)
+        {
+            size_t j = 0;
+            size_t i = strlen(chResult);
+            int t = !(i%2)? 1 : 0;
+            int k = 0;
+            strcpy(convertedValue, chResult);
+            for(j = i - 1; j > (i / 2 - t); j--) 
+            {
+                char ch  = chResult[j];
+                chResult[j] = chResult[k];
+                chResult[k++] = ch;
+            }
+            strcpy(convertedValue, chResult);
+            *err = ERROR_CONVERTBASE_OK;
+        }
+        else
+        {
+            *err = ERROR_CONVERTBASE_ALLOCATION;
+            return NULL;
+        }
+    }
+
+    if (*err == ERROR_CONVERTBASE_OK)
+    {
+        size_t lenConvertedValue = strlen(convertedValue);
+        if ((nbDigits > lenConvertedValue) && (nbDigits > 0))
+        {
+            size_t i = 0;
+            char *tmp = (char*)MALLOC(sizeof(char) * (nbDigits + 1));
+            if (tmp)
+            {
+                for (i = 0; i < nbDigits - lenConvertedValue; i++)
+                {
+                    tmp[i] = '0';
+                }
+                tmp[i] = 0;
+                strcat(tmp, convertedValue);
+                FREE(convertedValue);
+                convertedValue = tmp;
+            }
+        }
+    }
+
+    return convertedValue;
+}
+/*--------------------------------------------------------------------------*/
+char **convertMatrixOfDec2Base(const double* dValues, int mn,
+                               int numberbase, unsigned int nbDigits,
+                               error_convertbase *err)
+{
+    char **convertedValues = NULL;
+    int i = 0;
+    double maxVal = 0.;
+
+    for (i = 0; i < mn; i++)
+    {
+        long long int iValue = (long long int) dValues[i];
+
+        /* search max value */
+        if (dValues[i] > maxVal)
+        {
+            maxVal = dValues[i];
+        }
+
+        /* check if it is a integer value */
+        if (dValues[i] != (double)iValue)
+        {
+            *err = ERROR_CONVERTBASE_NOT_INTEGER_VALUE;
+            return NULL;
+        }
+
+        /* check if it is in the good interval */
+        if ((dValues[i] < 0) || (dValues[i] > pow(2, 52)))
+        {
+            *err = ERROR_CONVERTBASE_NOT_IN_INTERVAL;
+            return NULL;
+        }
+    }
+
+    if ((mn > 1) && (numberbase == 2)) /* Only binary base is uniformed about number of digits */
+    {
+        size_t maxDigits = 0;
+        char *maxBaseString = convertDec2Base(maxVal, numberbase, nbDigits, err);
+        if (maxBaseString)
+        {
+            maxDigits = strlen(maxBaseString);
+            FREE(maxBaseString);
+            if (maxDigits > nbDigits)
+            {
+                nbDigits = maxDigits;
+            }
+        }
+    }
+
+    convertedValues = (char **)MALLOC(sizeof(char*) * (mn));
+    if (convertedValues)
+    {
+        for (i = 0; i < mn; i++)
+        {
+            convertedValues[i] = convertDec2Base(dValues[i], numberbase, nbDigits, err);
+            if (*err)
+            {
+                freeArrayOfString(convertedValues, mn);
+                return NULL;
+            }
+        }
+    }
+    else
+    {
+        *err = ERROR_CONVERTBASE_ALLOCATION;
+    }
+    return convertedValues;
+}
+/*--------------------------------------------------------------------------*/
index 925ea8d..439e83f 100644 (file)
 #ifndef __CONVERTBASE_H__
 #define __CONVERTBASE_H__
 
+typedef enum
+{ 
+    ERROR_CONVERTBASE_OK = 0,
+    ERROR_CONVERTBASE_NOK = 1,
+    ERROR_CONVERTBASE_NOT_INTEGER_VALUE = 2,
+    ERROR_CONVERTBASE_NOT_IN_INTERVAL = 3,
+    ERROR_CONVERTBASE_ALLOCATION = 4,
+    ERROR_CONVERTBASE_INVALID_REPRESENTATION = 5
+} error_convertbase;
+
 /**
 * convert from base b to decimal
 * @param string base
 * @param[out] int if 0 no error  
 * @return converted value (decimal)
 */
-double convertBase2Dec(const char *pStr, int numberbase, int *ierr);
+double convertBase2Dec(const char *pStr, int numberbase, error_convertbase *err);
+
+/**
+* Convert decimal to base N number in string
+* @param[in] array of integer values
+* @param[in] number of elements in dValues array
+* @param[in] number of digits for representation
+* @param[out] error value
+* @return a matrix of string of size mn
+*/
+char **convertMatrixOfDec2Base(const double* dValues, int mn, int numberbase, unsigned int nbDigits, error_convertbase *err);
 
 #endif /* __CONVERTBASE_H__ */
 /*--------------------------------------------------------------------------*/ 
index 625585d..60117df 100644 (file)
@@ -191,6 +191,7 @@ lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MA
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="..\..\sci_gateway\c\sci_base2dec.c" />
+    <ClCompile Include="..\..\sci_gateway\c\sci_dec2base.c" />
     <ClCompile Include="cmp.c" />
     <ClCompile Include="convertbase.c" />
     <ClCompile Include="DllmainElementary_functions.c" />
index ddd31a3..cd4b007 100644 (file)
     <ClCompile Include="..\..\sci_gateway\c\sci_base2dec.c">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\sci_gateway\c\sci_dec2base.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\includes\dynlib_elementary_functions.h">
diff --git a/scilab/modules/elementary_functions/tests/unit_tests/dec2base.dia.ref b/scilab/modules/elementary_functions/tests/unit_tests/dec2base.dia.ref
new file mode 100644 (file)
index 0000000..cb94c18
--- /dev/null
@@ -0,0 +1,1040 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// unit tests for oct2dec function
+// =============================================================================
+base_10 = [ ..
+  247719156; ..
+  301329087; ..
+  91991261; ..
+  304378154; ..
+  173393766; ..
+  88794796; ..
+  278221199; ..
+  80252893; ..
+  154141979; ..
+  14043698; ..
+  242130331; ..
+  174094590; ..
+  287562153; ..
+  259349883; ..
+  186311423; ..
+  263784035; ..
+  327817148; ..
+  116302362; ..
+  360323531; ..
+  60305515; ..
+  212295907; ..
+  277376967; ..
+  253004483; ..
+  237458917; ..
+  199129448; ..
+  31132634; ..
+  28496930; ..
+  195998195; ..
+  342122589; ..
+  250930705; ..
+  203211579; ..
+  217212241; ..
+  179630287; ..
+  295202840; ..
+  148960890; ..
+  353024053; ..
+  11368132; ..
+  54552585; ..
+  60647442; ..
+  165510111; ..
+  68596283; ..
+  302777773; ..
+  339604701; ..
+  356158437; ..
+  189498151; ..
+  153286619; ..
+  247312967; ..
+  144685795; ..
+  269588982; ..
+  235006994; ..
+  204991311; ..
+  109255385; ..
+  139754456; ..
+  85366290; ..
+  346714302; ..
+  338883906; ..
+  116498924; ..
+  2581728; ..
+  162252596; ..
+  85992009; ..
+  253512434; ..
+  365464175; ..
+  303204250; ..
+  60513216; ..
+  288037511; ..
+  79535636; ..
+  40907765; ..
+  299405643; ..
+  134088221; ..
+  101555208; ..
+  92286250; ..
+  202684505; ..
+  31703477; ..
+  59261446; ..
+  186213437; ..
+  221201628; ..
+  212548066; ..
+  60896900; ..
+  365887424; ..
+  109507544; ..
+  295903895; ..
+  198249230; ..
+  218762929; ..
+  63028847; ..
+  283615520; ..
+  192847727; ..
+  29283248; ..
+  27484940; ..
+  195429455; ..
+  191535844; ..
+  113476949; ..
+  76312385; ..
+  184370515; ..
+  44051695; ..
+  136825601; ..
+  99778522; ..
+  123587332; ..
+  177733367; ..
+  26554660; ..
+  257675554; ..
+];
+base_11 = [ ..
+  "117916083"; ..
+  "145102004"; ..
+  "47A2143A"; ..
+  "1468A48A3"; ..
+  "89970337"; ..
+  "46138932"; ..
+  "133059783"; ..
+  "41334206"; ..
+  "7A011172"; ..
+  "7A22269"; ..
+  "114749113"; ..
+  "8A2A992A"; ..
+  "13835977A"; ..
+  "12343A451"; ..
+  "96193591"; ..
+  "125998939"; ..
+  "15905396A"; ..
+  "5A716760"; ..
+  "175436447"; ..
+  "3104A476"; ..
+  "A992106A"; ..
+  "13263246A"; ..
+  "11A8A6016"; ..
+  "112048443"; ..
+  "A24489A1"; ..
+  "16634455"; ..
+  "150A4190"; ..
+  "A06AA388"; ..
+  "166134846"; ..
+  "119709A53"; ..
+  "A478695A"; ..
+  "101679854"; ..
+  "9243A991"; ..
+  "1416A8299"; ..
+  "770A2581"; ..
+  "171300218"; ..
+  "6465056"; ..
+  "2888018A"; ..
+  "31263359"; ..
+  "85476218"; ..
+  "357A2448"; ..
+  "145A01471"; ..
+  "164775047"; ..
+  "173051118"; ..
+  "97A6A847"; ..
+  "79587562"; ..
+  "117668990"; ..
+  "74742641"; ..
+  "1291A3213"; ..
+  "110723262"; ..
+  "A5792008"; ..
+  "56743208"; ..
+  "71984656"; ..
+  "44206A59"; ..
+  "168790650"; ..
+  "164322549"; ..
+  "5A840403"; ..
+  "1503766"; ..
+  "83650860"; ..
+  "445A4084"; ..
+  "12011270A"; ..
+  "17832770A"; ..
+  "146172928"; ..
+  "31181525"; ..
+  "138653933"; ..
+  "40994334"; ..
+  "21100678"; ..
+  "144008989"; ..
+  "69764513"; ..
+  "52363A27"; ..
+  "48103031"; ..
+  "A4456961"; ..
+  "16994323"; ..
+  "304A7002"; ..
+  "96126A03"; ..
+  "10395406A"; ..
+  "A9A83565"; ..
+  "31413819"; ..
+  "178596701"; ..
+  "568A5703"; ..
+  "142036A81"; ..
+  "A19A7643"; ..
+  "102538910"; ..
+  "3263A562"; ..
+  "1361035A1"; ..
+  "99948396"; ..
+  "15590A35"; ..
+  "1457292A"; ..
+  "A0351051"; ..
+  "99131795"; ..
+  "59066A03"; ..
+  "3A092696"; ..
+  "9508832A"; ..
+  "22958766"; ..
+  "70264110"; ..
+  "51360098"; ..
+  "63841AA0"; ..
+  "91364789"; ..
+  "13A97A00"; ..
+  "1224A6504"; ..
+];
+base_12 = [ ..
+  "6AB63BB0"; ..
+  "84AB8313"; ..
+  "26983825"; ..
+  "85B28922"; ..
+  "4A09B746"; ..
+  "258A1A64"; ..
+  "7921377B"; ..
+  "22A62791"; ..
+  "4375664B"; ..
+  "4853182"; ..
+  "69109877"; ..
+  "4A379226"; ..
+  "80379349"; ..
+  "72A328A3"; ..
+  "5248B13B"; ..
+  "7441096B"; ..
+  "91950BB8"; ..
+  "32B48736"; ..
+  "A080868B"; ..
+  "18243037"; ..
+  "5B120517"; ..
+  "78A870B3"; ..
+  "7089276B"; ..
+  "67636431"; ..
+  "56830B48"; ..
+  "A5146A2"; ..
+  "9663342"; ..
+  "55780A6B"; ..
+  "966AB739"; ..
+  "70052641"; ..
+  "5807B363"; ..
+  "608B1641"; ..
+  "501A8867"; ..
+  "82A42B88"; ..
+  "41A78276"; ..
+  "9A2883B1"; ..
+  "3982944"; ..
+  "16329949"; ..
+  "18388A96"; ..
+  "47519393"; ..
+  "1AB80B0B"; ..
+  "85496751"; ..
+  "958965B9"; ..
+  "9B33A259"; ..
+  "53567347"; ..
+  "4340364B"; ..
+  "6A9A8B1B"; ..
+  "40556257"; ..
+  "76350186"; ..
+  "66853502"; ..
+  "58799293"; ..
+  "3070A5B5"; ..
+  "3A978508"; ..
+  "24709956"; ..
+  "98144A26"; ..
+  "955A9456"; ..
+  "33022438"; ..
+  "A46080"; ..
+  "46408218"; ..
+  "2496BA89"; ..
+  "70A98702"; ..
+  "A248757B"; ..
+  "8566150A"; ..
+  "18323280"; ..
+  "8056845B"; ..
+  "22777698"; ..
+  "11849585"; ..
+  "8432B1A3"; ..
+  "38AA5425"; ..
+  "2A016460"; ..
+  "26AA648A"; ..
+  "57A66335"; ..
+  "A74AB05"; ..
+  "17A1A99A"; ..
+  "524424A5"; ..
+  "620B6250"; ..
+  "5B22242A"; ..
+  "18489318"; ..
+  "A26504A8"; ..
+  "30810508"; ..
+  "8312081B"; ..
+  "56487692"; ..
+  "6131AB01"; ..
+  "1913703B"; ..
+  "7AB95428"; ..
+  "5470183B"; ..
+  "99823A8"; ..
+  "9255778"; ..
+  "555478BB"; ..
+  "5418A604"; ..
+  "32005645"; ..
+  "21682315"; ..
+  "518B3A97"; ..
+  "12904A67"; ..
+  "399A5595"; ..
+  "294BA24A"; ..
+  "35480544"; ..
+  "4B632B5B"; ..
+  "8A87344"; ..
+  "7236596A"; ..
+];
+base_13 = [ ..
+  "3C4244A9"; ..
+  "4A574A47"; ..
+  "1609B3CB"; ..
+  "4B0A1822"; ..
+  "29BCCC80"; ..
+  "1551C4CC"; ..
+  "45843B39"; ..
+  "1381B526"; ..
+  "25C1C294"; ..
+  "2BA92A6"; ..
+  "3B2186B1"; ..
+  "2A0B6C67"; ..
+  "47764728"; ..
+  "41967390"; ..
+  "2C7A385C"; ..
+  "4285A738"; ..
+  "52BBA359"; ..
+  "1B130B87"; ..
+  "5985C0B9"; ..
+  "C65604A"; ..
+  "34CA0BA5"; ..
+  "456097AA"; ..
+  "405550C4"; ..
+  "3A271347"; ..
+  "32340C9B"; ..
+  "65B06A0"; ..
+  "5B99AB7"; ..
+  "317B5983"; ..
+  "55B58803"; ..
+  "3CCAA20C"; ..
+  "3314004C"; ..
+  "3600286C"; ..
+  "2B2A4815"; ..
+  "4920B44A"; ..
+  "24B26C50"; ..
+  "581A4795"; ..
+  "2480509"; ..
+  "B3C0649"; ..
+  "C74587B"; ..
+  "2839C7A0"; ..
+  "11299922"; ..
+  "4A96125C"; ..
+  "55486737"; ..
+  "58A3134B"; ..
+  "3034B1AB"; ..
+  "259ACB55"; ..
+  "3C311645"; ..
+  "23C8B0C7"; ..
+  "43B10A10"; ..
+  "398C32C1"; ..
+  "33614145"; ..
+  "19834475"; ..
+  "22C5265A"; ..
+  "148BBAC9"; ..
+  "56AA57BC"; ..
+  "5529362A"; ..
+  "1B19C499"; ..
+  "6C5166"; ..
+  "277CBB6C"; ..
+  "14A7A85C"; ..
+  "406A2376"; ..
+  "5A93BBBB"; ..
+  "4AA803CB"; ..
+  "C6C974A"; ..
+  "4789CBC8"; ..
+  "13629C0B"; ..
+  "8623AA2"; ..
+  "4A050404"; ..
+  "21A1A557"; ..
+  "18069651"; ..
+  "16172764"; ..
+  "32CB717A"; ..
+  "6750470"; ..
+  "C37BA5A"; ..
+  "2C76B087"; ..
+  "36A9B64B"; ..
+  "3505B8B3"; ..
+  "C80228C"; ..
+  "5AA59746"; ..
+  "198C2183"; ..
+  "493C5581"; ..
+  "320C344A"; ..
+  "36426628"; ..
+  "1009A79B"; ..
+  "469B2246"; ..
+  "30C519A7"; ..
+  "60B3987"; ..
+  "59042A2"; ..
+  "31646B40"; ..
+  "308B2826"; ..
+  "1A681B31"; ..
+  "12A6BA76"; ..
+  "2C2742A4"; ..
+  "9184ABC"; ..
+  "224684C3"; ..
+  "17896A5C"; ..
+  "1C7B19CB"; ..
+  "2AA8C296"; ..
+  "5669A22"; ..
+  "414CC256"; ..
+];
+base_14 = [ ..
+  "24C84936"; ..
+  "2C03BB43"; ..
+  "C308725"; ..
+  "2C5D2DAA"; ..
+  "19058210"; ..
+  "BB15896"; ..
+  "28D447CB"; ..
+  "A930977"; ..
+  "16686295"; ..
+  "1C17D74"; ..
+  "2422BCB9"; ..
+  "1919B79C"; ..
+  "2A2969BB"; ..
+  "26631399"; ..
+  "1AA5BA6B"; ..
+  "270672CB"; ..
+  "31774C68"; ..
+  "11636358"; ..
+  "35BD7351"; ..
+  "801B32B"; ..
+  "202A3455"; ..
+  "28BA4C87"; ..
+  "2585CB2B"; ..
+  "23773713"; ..
+  "1C637080"; ..
+  "41C59D8"; ..
+  "3ADB270"; ..
+  "1C05DCB1"; ..
+  "3361A35B"; ..
+  "2547D09B"; ..
+  "1CDBA9AB"; ..
+  "20BC2DA1"; ..
+  "19BDCD0B"; ..
+  "2B2C52D2"; ..
+  "15AD8078"; ..
+  "34C5711B"; ..
+  "171CC96"; ..
+  "7360973"; ..
+  "80A9BA2"; ..
+  "17DA514B"; ..
+  "9178907"; ..
+  "2C2D7A7B"; ..
+  "33162909"; ..
+  "354314C5"; ..
+  "1B24B143"; ..
+  "16502683"; ..
+  "24BBA8BD"; ..
+  "153040B9"; ..
+  "27B389DC"; ..
+  "232D5D3C"; ..
+  "1D321407"; ..
+  "10720161"; ..
+  "147BCCD2"; ..
+  "B4A2242"; ..
+  "34093874"; ..
+  "33015D74"; ..
+  "11687C3A"; ..
+  "4B2C12"; ..
+  "17797D52"; ..
+  "B5C62A5"; ..
+  "25951CB0"; ..
+  "3677491D"; ..
+  "2C3A9266"; ..
+  "8072CC8"; ..
+  "2A37BD1D"; ..
+  "A7C540C"; ..
+  "560C113"; ..
+  "2BA9ABB5"; ..
+  "13B45D81"; ..
+  "D6B7CB6"; ..
+  "C384030"; ..
+  "1CCC0889"; ..
+  "42D3A61"; ..
+  "7C28A46"; ..
+  "1AA3407B"; ..
+  "21540BA4"; ..
+  "2032B2CA"; ..
+  "8132A68"; ..
+  "36844C80"; ..
+  "10787DD6"; ..
+  "2B4289A7"; ..
+  "1C488394"; ..
+  "210A8157"; ..
+  "85299A7"; ..
+  "2994A5D6"; ..
+  "1B87DAD9"; ..
+  "3C63A48"; ..
+  "3916540"; ..
+  "1BD5290B"; ..
+  "1B61B99A"; ..
+  "110DC805"; ..
+  "A1C68C9"; ..
+  "1A6B45C7"; ..
+  "5BC9B79"; ..
+  "142597B3"; ..
+  "D374614"; ..
+  "125B1188"; ..
+  "198678C7"; ..
+  "37534D6"; ..
+  "2631712A"; ..
+];
+base_15 = [ ..
+  "16B33406"; ..
+  "1B6C2A5C"; ..
+  "8121A0B"; ..
+  "1BAC61BE"; ..
+  "10350DE6"; ..
+  "7BDE881"; ..
+  "1965AD9E"; ..
+  "70A397D"; ..
+  "D7EBA6E"; ..
+  "1376168"; ..
+  "163CC4C1"; ..
+  "1043D8B0"; ..
+  "1A3A3903"; ..
+  "17B7E623"; ..
+  "115535B8"; ..
+  "18258375"; ..
+  "1DBA6018"; ..
+  "A324E5C"; ..
+  "219777DB"; ..
+  "546347A"; ..
+  "13987757"; ..
+  "19540B7C"; ..
+  "17329458"; ..
+  "15CA82E7"; ..
+  "127364B8"; ..
+  "2AEE73E"; ..
+  "277D805"; ..
+  "12318815"; ..
+  "2007E9C9"; ..
+  "17069C8A"; ..
+  "12C90C89"; ..
+  "141092B1"; ..
+  "10B83BC7"; ..
+  "1ADB2795"; ..
+  "D126860"; ..
+  "20ED4ABD"; ..
+  "EE8507"; ..
+  "4BC8AE0"; ..
+  "54CE92C"; ..
+  "E7E5076"; ..
+  "604EC58"; ..
+  "1B8ABDED"; ..
+  "1EC33936"; ..
+  "2140365C"; ..
+  "11982901"; ..
+  "D6CD3CE"; ..
+  "16AA2DB2"; ..
+  "CA7ECEA"; ..
+  "18A0333C"; ..
+  "15971A7E"; ..
+  "12EE3276"; ..
+  "98D1E75"; ..
+  "C408ADB"; ..
+  "7763AB0"; ..
+  "2068A26C"; ..
+  "1EB400A6"; ..
+  "A3632EE"; ..
+  "35EE53"; ..
+  "E39EC9B"; ..
+  "78391A9"; ..
+  "173C9BDE"; ..
+  "22140A35"; ..
+  "1B94346A"; ..
+  "54A4C96"; ..
+  "1A4496AB"; ..
+  "6EB11AB"; ..
+  "38D0C45"; ..
+  "1B442BB3"; ..
+  "BB89C9B"; ..
+  "8DB0673"; ..
+  "817E11A"; ..
+  "12BD9A05"; ..
+  "2BB3952"; ..
+  "5308E31"; ..
+  "11534542"; ..
+  "14646353"; ..
+  "139D7311"; ..
+  "552D7D5"; ..
+  "221C614E"; ..
+  "9931A2E"; ..
+  "1AEA0365"; ..
+  "126107A5"; ..
+  "143139A4"; ..
+  "5800332"; ..
+  "19D74365"; ..
+  "11DE5102"; ..
+  "28867B8"; ..
+  "262DA45"; ..
+  "12255055"; ..
+  "11C36564"; ..
+  "9E67BEE"; ..
+  "6A76125"; ..
+  "112BD47A"; ..
+  "3D0254A"; ..
+  "C02ADBB"; ..
+  "8B5E017"; ..
+  "ACB3707"; ..
+  "1090BB12"; ..
+  "24E80AA"; ..
+  "1794D4A4"; ..
+];
+base_16 = [ ..
+  "EC3E4F4"; ..
+  "11F5EABF"; ..
+  "57BACDD"; ..
+  "1224712A"; ..
+  "A55C766"; ..
+  "54AE6AC"; ..
+  "1095518F"; ..
+  "4C88FDD"; ..
+  "930051B"; ..
+  "D64A32"; ..
+  "E6E9D9B"; ..
+  "A6078FE"; ..
+  "1123D9A9"; ..
+  "F755D7B"; ..
+  "B1AE2FF"; ..
+  "FB90663"; ..
+  "138A17BC"; ..
+  "6EEA21A"; ..
+  "157A19CB"; ..
+  "398306B"; ..
+  "CA760E3"; ..
+  "10886FC7"; ..
+  "F148AC3"; ..
+  "E2755E5"; ..
+  "BDE7968"; ..
+  "1DB0BDA"; ..
+  "1B2D422"; ..
+  "BAEB1F3"; ..
+  "1464605D"; ..
+  "EF4E611"; ..
+  "C1CC33B"; ..
+  "CF26551"; ..
+  "AB4F0CF"; ..
+  "11987018"; ..
+  "8E0F67A"; ..
+  "150AB835"; ..
+  "AD76C4"; ..
+  "3406809"; ..
+  "39D6812"; ..
+  "9DD7BDF"; ..
+  "416B23B"; ..
+  "120C05AD"; ..
+  "143DF4DD"; ..
+  "153A8BE5"; ..
+  "B4B8327"; ..
+  "922F7DB"; ..
+  "EBDB247"; ..
+  "89FBAE3"; ..
+  "101199F6"; ..
+  "E01EC12"; ..
+  "C37EB4F"; ..
+  "6831AD9"; ..
+  "8547BD8"; ..
+  "5169612"; ..
+  "14AA70BE"; ..
+  "1432F542"; ..
+  "6F1A1EC"; ..
+  "2764E0"; ..
+  "9ABC734"; ..
+  "5202249"; ..
+  "F1C4AF2"; ..
+  "15C88A6F"; ..
+  "1212879A"; ..
+  "39B5BC0"; ..
+  "112B1A87"; ..
+  "4BD9E14"; ..
+  "27033F5"; ..
+  "11D8914B"; ..
+  "7FE061D"; ..
+  "60D9C08"; ..
+  "5802D2A"; ..
+  "C14B859"; ..
+  "1E3C1B5"; ..
+  "3884206"; ..
+  "B19643D"; ..
+  "D2F44DC"; ..
+  "CAB39E2"; ..
+  "3A13684"; ..
+  "15CEFFC0"; ..
+  "686F3D8"; ..
+  "11A32297"; ..
+  "BD10B0E"; ..
+  "D0A0EB1"; ..
+  "3C1BE6F"; ..
+  "10E7A120"; ..
+  "B7E9F6F"; ..
+  "1BED3B0"; ..
+  "1A3630C"; ..
+  "BA6044F"; ..
+  "B6A9AE4"; ..
+  "6C38555"; ..
+  "48C6F41"; ..
+  "AFD4553"; ..
+  "2A02CEF"; ..
+  "827CB01"; ..
+  "5F27FDA"; ..
+  "75DCB04"; ..
+  "A97FEF7"; ..
+  "1953124"; ..
+  "F5BD122"; ..
+];
+base_23 = [ ..
+  "1FB4L42"; ..
+  "20II24F"; ..
+  "E6GGC1"; ..
+  "216FG0I"; ..
+  "13LE3B9"; ..
+  "DI7017"; ..
+  "1K54JMK"; ..
+  "CAHLI5"; ..
+  "10LIJG4"; ..
+  "2445ED"; ..
+  "1EE5D6G"; ..
+  "1412H70"; ..
+  "1LFDDH7"; ..
+  "1H6HJ9K"; ..
+  "15LHJBF"; ..
+  "1HME6D2"; ..
+  "24LA33B"; ..
+  "I1DJ5A"; ..
+  "29MDIKB"; ..
+  "98BB1L"; ..
+  "19MEBBJ"; ..
+  "1K24B23"; ..
+  "1G7277L"; ..
+  "1DKCEEH"; ..
+  "17LD842"; ..
+  "4J5HJI"; ..
+  "49J39M"; ..
+  "17A8MMF"; ..
+  "273CKD4"; ..
+  "1FMFK3F"; ..
+  "18D3JK1"; ..
+  "1AH4D3B"; ..
+  "14KKGHB"; ..
+  "1MJKD92"; ..
+  "10370DA"; ..
+  "28JBK5K"; ..
+  "1HE7JE"; ..
+  "8ALEMC"; ..
+  "99GDA7"; ..
+  "12GA4CI"; ..
+  "AF2KE2"; ..
+  "210M3H0"; ..
+  "26HCLJI"; ..
+  "297GB8A"; ..
+  "16A3HD1"; ..
+  "10IHCHE"; ..
+  "1F9HC7G"; ..
+  "MB0F2H"; ..
+  "1IK8902"; ..
+  "1DBI2E9"; ..
+  "18JC34G"; ..
+  "GM9EL3"; ..
+  "LG982G"; ..
+  "D614LJ"; ..
+  "27JM6CK"; ..
+  "26EMG6K"; ..
+  "I26MIE"; ..
+  "95491"; ..
+  "124IAFG"; ..
+  "D86EI0"; ..
+  "1G8L1CH"; ..
+  "2AHM7CH"; ..
+  "212B4LB"; ..
+  "995CG9"; ..
+  "1LH6F81"; ..
+  "C84ML3"; ..
+  "68448B"; ..
+  "20BL04F"; ..
+  "KJ3EKF"; ..
+  "FHKHIJ"; ..
+  "E7HM3F"; ..
+  "18B6CBI"; ..
+  "4L6FM1"; ..
+  "94HF9E"; ..
+  "15L9I69"; ..
+  "1B8AAC2"; ..
+  "1A0C546"; ..
+  "9AE207"; ..
+  "2AJB2EK"; ..
+  "H078DD"; ..
+  "1MM94EH"; ..
+  "17IA05H"; ..
+  "1AMH0BG"; ..
+  "9I573F"; ..
+  "1L1B54D"; ..
+  "16M31AI"; ..
+  "4CEHJG"; ..
+  "464M99"; ..
+  "17885JJ"; ..
+  "16HA5C9"; ..
+  "HEBE49"; ..
+  "BJG1II"; ..
+  "15EJ7B8"; ..
+  "6J9DC2"; ..
+  "L5LEC4"; ..
+  "FBCH5E"; ..
+  "J4EDA6"; ..
+  "14E2IKG"; ..
+  "42KBJA"; ..
+  "1H0I57M"; ..
+];
+base_28 = [ ..
+  "EB0G8K"; ..
+  "HE6K93"; ..
+  "59IFM5"; ..
+  "HJ5HCA"; ..
+  "A22LEE"; ..
+  "54CQIK"; ..
+  "G4I1RB"; ..
+  "4IFNAL"; ..
+  "8QLLIJ"; ..
+  "MNKOI"; ..
+  "E1PRJN"; ..
+  "A36JBQ"; ..
+  "GJNGCP"; ..
+  "F1QBBN"; ..
+  "AN363B"; ..
+  "F94B6B"; ..
+  "J19A38"; ..
+  "6L60NM"; ..
+  "KQ649F"; ..
+  "3E348B"; ..
+  "C9APGJ"; ..
+  "G37H47"; ..
+  "EJH9MB"; ..
+  "DM957H"; ..
+  "BFR3I0"; ..
+  "1MI5RM"; ..
+  "1IA43E"; ..
+  "BAODJF"; ..
+  "JOH0NP"; ..
+  "EG6OIP"; ..
+  "BMH2CB"; ..
+  "CHAOC1"; ..
+  "AC6O7B"; ..
+  "H47I6G"; ..
+  "8I9L3M"; ..
+  "KE9HLP"; ..
+  "IDO4K"; ..
+  "34L2AH"; ..
+  "3EIKC2"; ..
+  "9H7HNB"; ..
+  "3RGN77"; ..
+  "HGGK3P"; ..
+  "JKE979"; ..
+  "KJCBK5"; ..
+  "B08AN3"; ..
+  "8PAMI3"; ..
+  "EAA25R"; ..
+  "8BB05N"; ..
+  "FIGNDQ"; ..
+  "DI9DMQ"; ..
+  "BPE4E7"; ..
+  "69L0A1"; ..
+  "83AA6G"; ..
+  "4QOLG2"; ..
+  "K425HI"; ..
+  "JJ9DOI"; ..
+  "6LERFO"; ..
+  "45H0G"; ..
+  "9BR6NG"; ..
+  "4RP7J5"; ..
+  "EKCDJE"; ..
+  "L6G97R"; ..
+  "HH8436"; ..
+  "3ECH68"; ..
+  "GKH6LR"; ..
+  "4HB4EC"; ..
+  "2AFE7H"; ..
+  "HB32QJ"; ..
+  "7M46P1"; ..
+  "5P66JK"; ..
+  "5A401E"; ..
+  "BLL249"; ..
+  "1NG631"; ..
+  "3CBGG6"; ..
+  "AMQL3P"; ..
+  "CNOGQ4"; ..
+  "C9MB6A"; ..
+  "3F22H8"; ..
+  "L77H40"; ..
+  "6A4DRK"; ..
+  "H5BGC7"; ..
+  "BEF0PI"; ..
+  "CJPE9L"; ..
+  "3IF5Q7"; ..
+  "GDBMDK"; ..
+  "B5KR6N"; ..
+  "1JHR28"; ..
+  "1GK190"; ..
+  "B9QG7B"; ..
+  "B3H5PO"; ..
+  "6GH905"; ..
+  "4C4969"; ..
+  "AJQMD7"; ..
+  "2FIKAN"; ..
+  "7QGQCH"; ..
+  "5M98EI"; ..
+  "751OP8"; ..
+  "A94CK7"; ..
+  "1F5IKK"; ..
+  "ER63MA"; ..
+];
+base_35 = [ ..
+  "4P2OP6"; ..
+  "5PS2WH"; ..
+  "1QAJVQ"; ..
+  "5RT6XO"; ..
+  "3AJ5WL"; ..
+  "1O60J6"; ..
+  "5AE4C4"; ..
+  "1IGRJS"; ..
+  "2WP56J"; ..
+  "9CJ8I"; ..
+  "4LCCEG"; ..
+  "3B0I15"; ..
+  "5GLYLI"; ..
+  "4WSY6N"; ..
+  "3J5FXI"; ..
+  "50RDVP"; ..
+  "68FUT8"; ..
+  "27HKOM"; ..
+  "6U41N1"; ..
+  "156IYP"; ..
+  "41GHRC"; ..
+  "59TF67"; ..
+  "4SKY9I"; ..
+  "4I8E0H"; ..
+  "3ROEMS"; ..
+  "KQ4DT"; ..
+  "IYMS0"; ..
+  "3PLDIF"; ..
+  "6HYIQ4"; ..
+  "4R7LDP"; ..
+  "3UEM04"; ..
+  "44Q641"; ..
+  "3EOLXW"; ..
+  "5LP6VU"; ..
+  "2T9APF"; ..
+  "6P8RVI"; ..
+  "7K53R"; ..
+  "11CCPA"; ..
+  "15EI42"; ..
+  "35AAAB"; ..
+  "1AOVXS"; ..
+  "5QQUII"; ..
+  "6GASBG"; ..
+  "6RBVKC"; ..
+  "3L9RCV"; ..
+  "2W56WO"; ..
+  "4OS84R"; ..
+  "2QEKTU"; ..
+  "54MRMC"; ..
+  "4GL7FJ"; ..
+  "3VL4TL"; ..
+  "22S82F"; ..
+  "2N4K9G"; ..
+  "1LV1QU"; ..
+  "6L1M2W"; ..
+  "6FSYWB"; ..
+  "27M65O"; ..
+  "1P7IN"; ..
+  "334B3G"; ..
+  "1MAMJJ"; ..
+  "4SWSWE"; ..
+  "6XIX3K"; ..
+  "5R1SNK"; ..
+  "15BDJ1"; ..
+  "5GX2N6"; ..
+  "1I021Q"; ..
+  "R943A"; ..
+  "5OI7QX"; ..
+  "2JCER1"; ..
+  "1WNM7D"; ..
+  "1QHFP0"; ..
+  "3U2BPU"; ..
+  "L4FDM"; ..
+  "14H6O6"; ..
+  "3J35XW"; ..
+  "47E7QI"; ..
+  "41MDLV"; ..
+  "15KBQF"; ..
+  "6XSSLE"; ..
+  "22Y3VY"; ..
+  "5M6J70"; ..
+  "3R3V3P"; ..
+  "45RBYE"; ..
+  "170247"; ..
+  "5DYWUK"; ..
+  "3NHVP2"; ..
+  "JHYO8"; ..
+  "IB1O0"; ..
+  "3P848P"; ..
+  "3MMARO"; ..
+  "25LO8J"; ..
+  "1FTUSU"; ..
+  "3HU6J0"; ..
+  "TCFJU"; ..
+  "2L69CV"; ..
+  "1VH6TW"; ..
+  "2CCHLM"; ..
+  "3DFDG7"; ..
+  "HOC9K"; ..
+  "4VOWDO"; ..
+];
+format(25);
+assert_checkequal(dec2base(base_10, 10), string(base_10));
+assert_checkequal(dec2base(base_10, 11), base_11);
+assert_checkequal(dec2base(base_10, 12), base_12);
+assert_checkequal(dec2base(base_10, 13), base_13);
+assert_checkequal(dec2base(base_10, 14), base_14);
+assert_checkequal(dec2base(base_10, 15), base_15);
+assert_checkequal(dec2base(base_10, 16), base_16);
+assert_checkequal(dec2base(base_10, 23), base_23);
+assert_checkequal(dec2base(base_10, 28), base_28);
+assert_checkequal(dec2base(base_10, 35), base_35);
diff --git a/scilab/modules/elementary_functions/tests/unit_tests/dec2base.tst b/scilab/modules/elementary_functions/tests/unit_tests/dec2base.tst
new file mode 100644 (file)
index 0000000..f133610
--- /dev/null
@@ -0,0 +1,1055 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// unit tests for oct2dec function
+// =============================================================================
+
+base_10 = [ ..
+  247719156; ..
+  301329087; ..
+  91991261; ..
+  304378154; ..
+  173393766; ..
+  88794796; ..
+  278221199; ..
+  80252893; ..
+  154141979; ..
+  14043698; ..
+  242130331; ..
+  174094590; ..
+  287562153; ..
+  259349883; ..
+  186311423; ..
+  263784035; ..
+  327817148; ..
+  116302362; ..
+  360323531; ..
+  60305515; ..
+  212295907; ..
+  277376967; ..
+  253004483; ..
+  237458917; ..
+  199129448; ..
+  31132634; ..
+  28496930; ..
+  195998195; ..
+  342122589; ..
+  250930705; ..
+  203211579; ..
+  217212241; ..
+  179630287; ..
+  295202840; ..
+  148960890; ..
+  353024053; ..
+  11368132; ..
+  54552585; ..
+  60647442; ..
+  165510111; ..
+  68596283; ..
+  302777773; ..
+  339604701; ..
+  356158437; ..
+  189498151; ..
+  153286619; ..
+  247312967; ..
+  144685795; ..
+  269588982; ..
+  235006994; ..
+  204991311; ..
+  109255385; ..
+  139754456; ..
+  85366290; ..
+  346714302; ..
+  338883906; ..
+  116498924; ..
+  2581728; ..
+  162252596; ..
+  85992009; ..
+  253512434; ..
+  365464175; ..
+  303204250; ..
+  60513216; ..
+  288037511; ..
+  79535636; ..
+  40907765; ..
+  299405643; ..
+  134088221; ..
+  101555208; ..
+  92286250; ..
+  202684505; ..
+  31703477; ..
+  59261446; ..
+  186213437; ..
+  221201628; ..
+  212548066; ..
+  60896900; ..
+  365887424; ..
+  109507544; ..
+  295903895; ..
+  198249230; ..
+  218762929; ..
+  63028847; ..
+  283615520; ..
+  192847727; ..
+  29283248; ..
+  27484940; ..
+  195429455; ..
+  191535844; ..
+  113476949; ..
+  76312385; ..
+  184370515; ..
+  44051695; ..
+  136825601; ..
+  99778522; ..
+  123587332; ..
+  177733367; ..
+  26554660; ..
+  257675554; ..
+];
+
+base_11 = [ ..
+  "117916083"; ..
+  "145102004"; ..
+  "47A2143A"; ..
+  "1468A48A3"; ..
+  "89970337"; ..
+  "46138932"; ..
+  "133059783"; ..
+  "41334206"; ..
+  "7A011172"; ..
+  "7A22269"; ..
+  "114749113"; ..
+  "8A2A992A"; ..
+  "13835977A"; ..
+  "12343A451"; ..
+  "96193591"; ..
+  "125998939"; ..
+  "15905396A"; ..
+  "5A716760"; ..
+  "175436447"; ..
+  "3104A476"; ..
+  "A992106A"; ..
+  "13263246A"; ..
+  "11A8A6016"; ..
+  "112048443"; ..
+  "A24489A1"; ..
+  "16634455"; ..
+  "150A4190"; ..
+  "A06AA388"; ..
+  "166134846"; ..
+  "119709A53"; ..
+  "A478695A"; ..
+  "101679854"; ..
+  "9243A991"; ..
+  "1416A8299"; ..
+  "770A2581"; ..
+  "171300218"; ..
+  "6465056"; ..
+  "2888018A"; ..
+  "31263359"; ..
+  "85476218"; ..
+  "357A2448"; ..
+  "145A01471"; ..
+  "164775047"; ..
+  "173051118"; ..
+  "97A6A847"; ..
+  "79587562"; ..
+  "117668990"; ..
+  "74742641"; ..
+  "1291A3213"; ..
+  "110723262"; ..
+  "A5792008"; ..
+  "56743208"; ..
+  "71984656"; ..
+  "44206A59"; ..
+  "168790650"; ..
+  "164322549"; ..
+  "5A840403"; ..
+  "1503766"; ..
+  "83650860"; ..
+  "445A4084"; ..
+  "12011270A"; ..
+  "17832770A"; ..
+  "146172928"; ..
+  "31181525"; ..
+  "138653933"; ..
+  "40994334"; ..
+  "21100678"; ..
+  "144008989"; ..
+  "69764513"; ..
+  "52363A27"; ..
+  "48103031"; ..
+  "A4456961"; ..
+  "16994323"; ..
+  "304A7002"; ..
+  "96126A03"; ..
+  "10395406A"; ..
+  "A9A83565"; ..
+  "31413819"; ..
+  "178596701"; ..
+  "568A5703"; ..
+  "142036A81"; ..
+  "A19A7643"; ..
+  "102538910"; ..
+  "3263A562"; ..
+  "1361035A1"; ..
+  "99948396"; ..
+  "15590A35"; ..
+  "1457292A"; ..
+  "A0351051"; ..
+  "99131795"; ..
+  "59066A03"; ..
+  "3A092696"; ..
+  "9508832A"; ..
+  "22958766"; ..
+  "70264110"; ..
+  "51360098"; ..
+  "63841AA0"; ..
+  "91364789"; ..
+  "13A97A00"; ..
+  "1224A6504"; ..
+];
+
+base_12 = [ ..
+  "6AB63BB0"; ..
+  "84AB8313"; ..
+  "26983825"; ..
+  "85B28922"; ..
+  "4A09B746"; ..
+  "258A1A64"; ..
+  "7921377B"; ..
+  "22A62791"; ..
+  "4375664B"; ..
+  "4853182"; ..
+  "69109877"; ..
+  "4A379226"; ..
+  "80379349"; ..
+  "72A328A3"; ..
+  "5248B13B"; ..
+  "7441096B"; ..
+  "91950BB8"; ..
+  "32B48736"; ..
+  "A080868B"; ..
+  "18243037"; ..
+  "5B120517"; ..
+  "78A870B3"; ..
+  "7089276B"; ..
+  "67636431"; ..
+  "56830B48"; ..
+  "A5146A2"; ..
+  "9663342"; ..
+  "55780A6B"; ..
+  "966AB739"; ..
+  "70052641"; ..
+  "5807B363"; ..
+  "608B1641"; ..
+  "501A8867"; ..
+  "82A42B88"; ..
+  "41A78276"; ..
+  "9A2883B1"; ..
+  "3982944"; ..
+  "16329949"; ..
+  "18388A96"; ..
+  "47519393"; ..
+  "1AB80B0B"; ..
+  "85496751"; ..
+  "958965B9"; ..
+  "9B33A259"; ..
+  "53567347"; ..
+  "4340364B"; ..
+  "6A9A8B1B"; ..
+  "40556257"; ..
+  "76350186"; ..
+  "66853502"; ..
+  "58799293"; ..
+  "3070A5B5"; ..
+  "3A978508"; ..
+  "24709956"; ..
+  "98144A26"; ..
+  "955A9456"; ..
+  "33022438"; ..
+  "A46080"; ..
+  "46408218"; ..
+  "2496BA89"; ..
+  "70A98702"; ..
+  "A248757B"; ..
+  "8566150A"; ..
+  "18323280"; ..
+  "8056845B"; ..
+  "22777698"; ..
+  "11849585"; ..
+  "8432B1A3"; ..
+  "38AA5425"; ..
+  "2A016460"; ..
+  "26AA648A"; ..
+  "57A66335"; ..
+  "A74AB05"; ..
+  "17A1A99A"; ..
+  "524424A5"; ..
+  "620B6250"; ..
+  "5B22242A"; ..
+  "18489318"; ..
+  "A26504A8"; ..
+  "30810508"; ..
+  "8312081B"; ..
+  "56487692"; ..
+  "6131AB01"; ..
+  "1913703B"; ..
+  "7AB95428"; ..
+  "5470183B"; ..
+  "99823A8"; ..
+  "9255778"; ..
+  "555478BB"; ..
+  "5418A604"; ..
+  "32005645"; ..
+  "21682315"; ..
+  "518B3A97"; ..
+  "12904A67"; ..
+  "399A5595"; ..
+  "294BA24A"; ..
+  "35480544"; ..
+  "4B632B5B"; ..
+  "8A87344"; ..
+  "7236596A"; ..
+];
+
+base_13 = [ ..
+  "3C4244A9"; ..
+  "4A574A47"; ..
+  "1609B3CB"; ..
+  "4B0A1822"; ..
+  "29BCCC80"; ..
+  "1551C4CC"; ..
+  "45843B39"; ..
+  "1381B526"; ..
+  "25C1C294"; ..
+  "2BA92A6"; ..
+  "3B2186B1"; ..
+  "2A0B6C67"; ..
+  "47764728"; ..
+  "41967390"; ..
+  "2C7A385C"; ..
+  "4285A738"; ..
+  "52BBA359"; ..
+  "1B130B87"; ..
+  "5985C0B9"; ..
+  "C65604A"; ..
+  "34CA0BA5"; ..
+  "456097AA"; ..
+  "405550C4"; ..
+  "3A271347"; ..
+  "32340C9B"; ..
+  "65B06A0"; ..
+  "5B99AB7"; ..
+  "317B5983"; ..
+  "55B58803"; ..
+  "3CCAA20C"; ..
+  "3314004C"; ..
+  "3600286C"; ..
+  "2B2A4815"; ..
+  "4920B44A"; ..
+  "24B26C50"; ..
+  "581A4795"; ..
+  "2480509"; ..
+  "B3C0649"; ..
+  "C74587B"; ..
+  "2839C7A0"; ..
+  "11299922"; ..
+  "4A96125C"; ..
+  "55486737"; ..
+  "58A3134B"; ..
+  "3034B1AB"; ..
+  "259ACB55"; ..
+  "3C311645"; ..
+  "23C8B0C7"; ..
+  "43B10A10"; ..
+  "398C32C1"; ..
+  "33614145"; ..
+  "19834475"; ..
+  "22C5265A"; ..
+  "148BBAC9"; ..
+  "56AA57BC"; ..
+  "5529362A"; ..
+  "1B19C499"; ..
+  "6C5166"; ..
+  "277CBB6C"; ..
+  "14A7A85C"; ..
+  "406A2376"; ..
+  "5A93BBBB"; ..
+  "4AA803CB"; ..
+  "C6C974A"; ..
+  "4789CBC8"; ..
+  "13629C0B"; ..
+  "8623AA2"; ..
+  "4A050404"; ..
+  "21A1A557"; ..
+  "18069651"; ..
+  "16172764"; ..
+  "32CB717A"; ..
+  "6750470"; ..
+  "C37BA5A"; ..
+  "2C76B087"; ..
+  "36A9B64B"; ..
+  "3505B8B3"; ..
+  "C80228C"; ..
+  "5AA59746"; ..
+  "198C2183"; ..
+  "493C5581"; ..
+  "320C344A"; ..
+  "36426628"; ..
+  "1009A79B"; ..
+  "469B2246"; ..
+  "30C519A7"; ..
+  "60B3987"; ..
+  "59042A2"; ..
+  "31646B40"; ..
+  "308B2826"; ..
+  "1A681B31"; ..
+  "12A6BA76"; ..
+  "2C2742A4"; ..
+  "9184ABC"; ..
+  "224684C3"; ..
+  "17896A5C"; ..
+  "1C7B19CB"; ..
+  "2AA8C296"; ..
+  "5669A22"; ..
+  "414CC256"; ..
+];
+
+base_14 = [ ..
+  "24C84936"; ..
+  "2C03BB43"; ..
+  "C308725"; ..
+  "2C5D2DAA"; ..
+  "19058210"; ..
+  "BB15896"; ..
+  "28D447CB"; ..
+  "A930977"; ..
+  "16686295"; ..
+  "1C17D74"; ..
+  "2422BCB9"; ..
+  "1919B79C"; ..
+  "2A2969BB"; ..
+  "26631399"; ..
+  "1AA5BA6B"; ..
+  "270672CB"; ..
+  "31774C68"; ..
+  "11636358"; ..
+  "35BD7351"; ..
+  "801B32B"; ..
+  "202A3455"; ..
+  "28BA4C87"; ..
+  "2585CB2B"; ..
+  "23773713"; ..
+  "1C637080"; ..
+  "41C59D8"; ..
+  "3ADB270"; ..
+  "1C05DCB1"; ..
+  "3361A35B"; ..
+  "2547D09B"; ..
+  "1CDBA9AB"; ..
+  "20BC2DA1"; ..
+  "19BDCD0B"; ..
+  "2B2C52D2"; ..
+  "15AD8078"; ..
+  "34C5711B"; ..
+  "171CC96"; ..
+  "7360973"; ..
+  "80A9BA2"; ..
+  "17DA514B"; ..
+  "9178907"; ..
+  "2C2D7A7B"; ..
+  "33162909"; ..
+  "354314C5"; ..
+  "1B24B143"; ..
+  "16502683"; ..
+  "24BBA8BD"; ..
+  "153040B9"; ..
+  "27B389DC"; ..
+  "232D5D3C"; ..
+  "1D321407"; ..
+  "10720161"; ..
+  "147BCCD2"; ..
+  "B4A2242"; ..
+  "34093874"; ..
+  "33015D74"; ..
+  "11687C3A"; ..
+  "4B2C12"; ..
+  "17797D52"; ..
+  "B5C62A5"; ..
+  "25951CB0"; ..
+  "3677491D"; ..
+  "2C3A9266"; ..
+  "8072CC8"; ..
+  "2A37BD1D"; ..
+  "A7C540C"; ..
+  "560C113"; ..
+  "2BA9ABB5"; ..
+  "13B45D81"; ..
+  "D6B7CB6"; ..
+  "C384030"; ..
+  "1CCC0889"; ..
+  "42D3A61"; ..
+  "7C28A46"; ..
+  "1AA3407B"; ..
+  "21540BA4"; ..
+  "2032B2CA"; ..
+  "8132A68"; ..
+  "36844C80"; ..
+  "10787DD6"; ..
+  "2B4289A7"; ..
+  "1C488394"; ..
+  "210A8157"; ..
+  "85299A7"; ..
+  "2994A5D6"; ..
+  "1B87DAD9"; ..
+  "3C63A48"; ..
+  "3916540"; ..
+  "1BD5290B"; ..
+  "1B61B99A"; ..
+  "110DC805"; ..
+  "A1C68C9"; ..
+  "1A6B45C7"; ..
+  "5BC9B79"; ..
+  "142597B3"; ..
+  "D374614"; ..
+  "125B1188"; ..
+  "198678C7"; ..
+  "37534D6"; ..
+  "2631712A"; ..
+];
+
+base_15 = [ ..
+  "16B33406"; ..
+  "1B6C2A5C"; ..
+  "8121A0B"; ..
+  "1BAC61BE"; ..
+  "10350DE6"; ..
+  "7BDE881"; ..
+  "1965AD9E"; ..
+  "70A397D"; ..
+  "D7EBA6E"; ..
+  "1376168"; ..
+  "163CC4C1"; ..
+  "1043D8B0"; ..
+  "1A3A3903"; ..
+  "17B7E623"; ..
+  "115535B8"; ..
+  "18258375"; ..
+  "1DBA6018"; ..
+  "A324E5C"; ..
+  "219777DB"; ..
+  "546347A"; ..
+  "13987757"; ..
+  "19540B7C"; ..
+  "17329458"; ..
+  "15CA82E7"; ..
+  "127364B8"; ..
+  "2AEE73E"; ..
+  "277D805"; ..
+  "12318815"; ..
+  "2007E9C9"; ..
+  "17069C8A"; ..
+  "12C90C89"; ..
+  "141092B1"; ..
+  "10B83BC7"; ..
+  "1ADB2795"; ..
+  "D126860"; ..
+  "20ED4ABD"; ..
+  "EE8507"; ..
+  "4BC8AE0"; ..
+  "54CE92C"; ..
+  "E7E5076"; ..
+  "604EC58"; ..
+  "1B8ABDED"; ..
+  "1EC33936"; ..
+  "2140365C"; ..
+  "11982901"; ..
+  "D6CD3CE"; ..
+  "16AA2DB2"; ..
+  "CA7ECEA"; ..
+  "18A0333C"; ..
+  "15971A7E"; ..
+  "12EE3276"; ..
+  "98D1E75"; ..
+  "C408ADB"; ..
+  "7763AB0"; ..
+  "2068A26C"; ..
+  "1EB400A6"; ..
+  "A3632EE"; ..
+  "35EE53"; ..
+  "E39EC9B"; ..
+  "78391A9"; ..
+  "173C9BDE"; ..
+  "22140A35"; ..
+  "1B94346A"; ..
+  "54A4C96"; ..
+  "1A4496AB"; ..
+  "6EB11AB"; ..
+  "38D0C45"; ..
+  "1B442BB3"; ..
+  "BB89C9B"; ..
+  "8DB0673"; ..
+  "817E11A"; ..
+  "12BD9A05"; ..
+  "2BB3952"; ..
+  "5308E31"; ..
+  "11534542"; ..
+  "14646353"; ..
+  "139D7311"; ..
+  "552D7D5"; ..
+  "221C614E"; ..
+  "9931A2E"; ..
+  "1AEA0365"; ..
+  "126107A5"; ..
+  "143139A4"; ..
+  "5800332"; ..
+  "19D74365"; ..
+  "11DE5102"; ..
+  "28867B8"; ..
+  "262DA45"; ..
+  "12255055"; ..
+  "11C36564"; ..
+  "9E67BEE"; ..
+  "6A76125"; ..
+  "112BD47A"; ..
+  "3D0254A"; ..
+  "C02ADBB"; ..
+  "8B5E017"; ..
+  "ACB3707"; ..
+  "1090BB12"; ..
+  "24E80AA"; ..
+  "1794D4A4"; ..
+];
+
+base_16 = [ ..
+  "EC3E4F4"; ..
+  "11F5EABF"; ..
+  "57BACDD"; ..
+  "1224712A"; ..
+  "A55C766"; ..
+  "54AE6AC"; ..
+  "1095518F"; ..
+  "4C88FDD"; ..
+  "930051B"; ..
+  "D64A32"; ..
+  "E6E9D9B"; ..
+  "A6078FE"; ..
+  "1123D9A9"; ..
+  "F755D7B"; ..
+  "B1AE2FF"; ..
+  "FB90663"; ..
+  "138A17BC"; ..
+  "6EEA21A"; ..
+  "157A19CB"; ..
+  "398306B"; ..
+  "CA760E3"; ..
+  "10886FC7"; ..
+  "F148AC3"; ..
+  "E2755E5"; ..
+  "BDE7968"; ..
+  "1DB0BDA"; ..
+  "1B2D422"; ..
+  "BAEB1F3"; ..
+  "1464605D"; ..
+  "EF4E611"; ..
+  "C1CC33B"; ..
+  "CF26551"; ..
+  "AB4F0CF"; ..
+  "11987018"; ..
+  "8E0F67A"; ..
+  "150AB835"; ..
+  "AD76C4"; ..
+  "3406809"; ..
+  "39D6812"; ..
+  "9DD7BDF"; ..
+  "416B23B"; ..
+  "120C05AD"; ..
+  "143DF4DD"; ..
+  "153A8BE5"; ..
+  "B4B8327"; ..
+  "922F7DB"; ..
+  "EBDB247"; ..
+  "89FBAE3"; ..
+  "101199F6"; ..
+  "E01EC12"; ..
+  "C37EB4F"; ..
+  "6831AD9"; ..
+  "8547BD8"; ..
+  "5169612"; ..
+  "14AA70BE"; ..
+  "1432F542"; ..
+  "6F1A1EC"; ..
+  "2764E0"; ..
+  "9ABC734"; ..
+  "5202249"; ..
+  "F1C4AF2"; ..
+  "15C88A6F"; ..
+  "1212879A"; ..
+  "39B5BC0"; ..
+  "112B1A87"; ..
+  "4BD9E14"; ..
+  "27033F5"; ..
+  "11D8914B"; ..
+  "7FE061D"; ..
+  "60D9C08"; ..
+  "5802D2A"; ..
+  "C14B859"; ..
+  "1E3C1B5"; ..
+  "3884206"; ..
+  "B19643D"; ..
+  "D2F44DC"; ..
+  "CAB39E2"; ..
+  "3A13684"; ..
+  "15CEFFC0"; ..
+  "686F3D8"; ..
+  "11A32297"; ..
+  "BD10B0E"; ..
+  "D0A0EB1"; ..
+  "3C1BE6F"; ..
+  "10E7A120"; ..
+  "B7E9F6F"; ..
+  "1BED3B0"; ..
+  "1A3630C"; ..
+  "BA6044F"; ..
+  "B6A9AE4"; ..
+  "6C38555"; ..
+  "48C6F41"; ..
+  "AFD4553"; ..
+  "2A02CEF"; ..
+  "827CB01"; ..
+  "5F27FDA"; ..
+  "75DCB04"; ..
+  "A97FEF7"; ..
+  "1953124"; ..
+  "F5BD122"; ..
+];
+
+base_23 = [ ..
+  "1FB4L42"; ..
+  "20II24F"; ..
+  "E6GGC1"; ..
+  "216FG0I"; ..
+  "13LE3B9"; ..
+  "DI7017"; ..
+  "1K54JMK"; ..
+  "CAHLI5"; ..
+  "10LIJG4"; ..
+  "2445ED"; ..
+  "1EE5D6G"; ..
+  "1412H70"; ..
+  "1LFDDH7"; ..
+  "1H6HJ9K"; ..
+  "15LHJBF"; ..
+  "1HME6D2"; ..
+  "24LA33B"; ..
+  "I1DJ5A"; ..
+  "29MDIKB"; ..
+  "98BB1L"; ..
+  "19MEBBJ"; ..
+  "1K24B23"; ..
+  "1G7277L"; ..
+  "1DKCEEH"; ..
+  "17LD842"; ..
+  "4J5HJI"; ..
+  "49J39M"; ..
+  "17A8MMF"; ..
+  "273CKD4"; ..
+  "1FMFK3F"; ..
+  "18D3JK1"; ..
+  "1AH4D3B"; ..
+  "14KKGHB"; ..
+  "1MJKD92"; ..
+  "10370DA"; ..
+  "28JBK5K"; ..
+  "1HE7JE"; ..
+  "8ALEMC"; ..
+  "99GDA7"; ..
+  "12GA4CI"; ..
+  "AF2KE2"; ..
+  "210M3H0"; ..
+  "26HCLJI"; ..
+  "297GB8A"; ..
+  "16A3HD1"; ..
+  "10IHCHE"; ..
+  "1F9HC7G"; ..
+  "MB0F2H"; ..
+  "1IK8902"; ..
+  "1DBI2E9"; ..
+  "18JC34G"; ..
+  "GM9EL3"; ..
+  "LG982G"; ..
+  "D614LJ"; ..
+  "27JM6CK"; ..
+  "26EMG6K"; ..
+  "I26MIE"; ..
+  "95491"; ..
+  "124IAFG"; ..
+  "D86EI0"; ..
+  "1G8L1CH"; ..
+  "2AHM7CH"; ..
+  "212B4LB"; ..
+  "995CG9"; ..
+  "1LH6F81"; ..
+  "C84ML3"; ..
+  "68448B"; ..
+  "20BL04F"; ..
+  "KJ3EKF"; ..
+  "FHKHIJ"; ..
+  "E7HM3F"; ..
+  "18B6CBI"; ..
+  "4L6FM1"; ..
+  "94HF9E"; ..
+  "15L9I69"; ..
+  "1B8AAC2"; ..
+  "1A0C546"; ..
+  "9AE207"; ..
+  "2AJB2EK"; ..
+  "H078DD"; ..
+  "1MM94EH"; ..
+  "17IA05H"; ..
+  "1AMH0BG"; ..
+  "9I573F"; ..
+  "1L1B54D"; ..
+  "16M31AI"; ..
+  "4CEHJG"; ..
+  "464M99"; ..
+  "17885JJ"; ..
+  "16HA5C9"; ..
+  "HEBE49"; ..
+  "BJG1II"; ..
+  "15EJ7B8"; ..
+  "6J9DC2"; ..
+  "L5LEC4"; ..
+  "FBCH5E"; ..
+  "J4EDA6"; ..
+  "14E2IKG"; ..
+  "42KBJA"; ..
+  "1H0I57M"; ..
+];
+
+base_28 = [ ..
+  "EB0G8K"; ..
+  "HE6K93"; ..
+  "59IFM5"; ..
+  "HJ5HCA"; ..
+  "A22LEE"; ..
+  "54CQIK"; ..
+  "G4I1RB"; ..
+  "4IFNAL"; ..
+  "8QLLIJ"; ..
+  "MNKOI"; ..
+  "E1PRJN"; ..
+  "A36JBQ"; ..
+  "GJNGCP"; ..
+  "F1QBBN"; ..
+  "AN363B"; ..
+  "F94B6B"; ..
+  "J19A38"; ..
+  "6L60NM"; ..
+  "KQ649F"; ..
+  "3E348B"; ..
+  "C9APGJ"; ..
+  "G37H47"; ..
+  "EJH9MB"; ..
+  "DM957H"; ..
+  "BFR3I0"; ..
+  "1MI5RM"; ..
+  "1IA43E"; ..
+  "BAODJF"; ..
+  "JOH0NP"; ..
+  "EG6OIP"; ..
+  "BMH2CB"; ..
+  "CHAOC1"; ..
+  "AC6O7B"; ..
+  "H47I6G"; ..
+  "8I9L3M"; ..
+  "KE9HLP"; ..
+  "IDO4K"; ..
+  "34L2AH"; ..
+  "3EIKC2"; ..
+  "9H7HNB"; ..
+  "3RGN77"; ..
+  "HGGK3P"; ..
+  "JKE979"; ..
+  "KJCBK5"; ..
+  "B08AN3"; ..
+  "8PAMI3"; ..
+  "EAA25R"; ..
+  "8BB05N"; ..
+  "FIGNDQ"; ..
+  "DI9DMQ"; ..
+  "BPE4E7"; ..
+  "69L0A1"; ..
+  "83AA6G"; ..
+  "4QOLG2"; ..
+  "K425HI"; ..
+  "JJ9DOI"; ..
+  "6LERFO"; ..
+  "45H0G"; ..
+  "9BR6NG"; ..
+  "4RP7J5"; ..
+  "EKCDJE"; ..
+  "L6G97R"; ..
+  "HH8436"; ..
+  "3ECH68"; ..
+  "GKH6LR"; ..
+  "4HB4EC"; ..
+  "2AFE7H"; ..
+  "HB32QJ"; ..
+  "7M46P1"; ..
+  "5P66JK"; ..
+  "5A401E"; ..
+  "BLL249"; ..
+  "1NG631"; ..
+  "3CBGG6"; ..
+  "AMQL3P"; ..
+  "CNOGQ4"; ..
+  "C9MB6A"; ..
+  "3F22H8"; ..
+  "L77H40"; ..
+  "6A4DRK"; ..
+  "H5BGC7"; ..
+  "BEF0PI"; ..
+  "CJPE9L"; ..
+  "3IF5Q7"; ..
+  "GDBMDK"; ..
+  "B5KR6N"; ..
+  "1JHR28"; ..
+  "1GK190"; ..
+  "B9QG7B"; ..
+  "B3H5PO"; ..
+  "6GH905"; ..
+  "4C4969"; ..
+  "AJQMD7"; ..
+  "2FIKAN"; ..
+  "7QGQCH"; ..
+  "5M98EI"; ..
+  "751OP8"; ..
+  "A94CK7"; ..
+  "1F5IKK"; ..
+  "ER63MA"; ..
+];
+
+base_35 = [ ..
+  "4P2OP6"; ..
+  "5PS2WH"; ..
+  "1QAJVQ"; ..
+  "5RT6XO"; ..
+  "3AJ5WL"; ..
+  "1O60J6"; ..
+  "5AE4C4"; ..
+  "1IGRJS"; ..
+  "2WP56J"; ..
+  "9CJ8I"; ..
+  "4LCCEG"; ..
+  "3B0I15"; ..
+  "5GLYLI"; ..
+  "4WSY6N"; ..
+  "3J5FXI"; ..
+  "50RDVP"; ..
+  "68FUT8"; ..
+  "27HKOM"; ..
+  "6U41N1"; ..
+  "156IYP"; ..
+  "41GHRC"; ..
+  "59TF67"; ..
+  "4SKY9I"; ..
+  "4I8E0H"; ..
+  "3ROEMS"; ..
+  "KQ4DT"; ..
+  "IYMS0"; ..
+  "3PLDIF"; ..
+  "6HYIQ4"; ..
+  "4R7LDP"; ..
+  "3UEM04"; ..
+  "44Q641"; ..
+  "3EOLXW"; ..
+  "5LP6VU"; ..
+  "2T9APF"; ..
+  "6P8RVI"; ..
+  "7K53R"; ..
+  "11CCPA"; ..
+  "15EI42"; ..
+  "35AAAB"; ..
+  "1AOVXS"; ..
+  "5QQUII"; ..
+  "6GASBG"; ..
+  "6RBVKC"; ..
+  "3L9RCV"; ..
+  "2W56WO"; ..
+  "4OS84R"; ..
+  "2QEKTU"; ..
+  "54MRMC"; ..
+  "4GL7FJ"; ..
+  "3VL4TL"; ..
+  "22S82F"; ..
+  "2N4K9G"; ..
+  "1LV1QU"; ..
+  "6L1M2W"; ..
+  "6FSYWB"; ..
+  "27M65O"; ..
+  "1P7IN"; ..
+  "334B3G"; ..
+  "1MAMJJ"; ..
+  "4SWSWE"; ..
+  "6XIX3K"; ..
+  "5R1SNK"; ..
+  "15BDJ1"; ..
+  "5GX2N6"; ..
+  "1I021Q"; ..
+  "R943A"; ..
+  "5OI7QX"; ..
+  "2JCER1"; ..
+  "1WNM7D"; ..
+  "1QHFP0"; ..
+  "3U2BPU"; ..
+  "L4FDM"; ..
+  "14H6O6"; ..
+  "3J35XW"; ..
+  "47E7QI"; ..
+  "41MDLV"; ..
+  "15KBQF"; ..
+  "6XSSLE"; ..
+  "22Y3VY"; ..
+  "5M6J70"; ..
+  "3R3V3P"; ..
+  "45RBYE"; ..
+  "170247"; ..
+  "5DYWUK"; ..
+  "3NHVP2"; ..
+  "JHYO8"; ..
+  "IB1O0"; ..
+  "3P848P"; ..
+  "3MMARO"; ..
+  "25LO8J"; ..
+  "1FTUSU"; ..
+  "3HU6J0"; ..
+  "TCFJU"; ..
+  "2L69CV"; ..
+  "1VH6TW"; ..
+  "2CCHLM"; ..
+  "3DFDG7"; ..
+  "HOC9K"; ..
+  "4VOWDO"; ..
+];
+
+
+format(25);
+assert_checkequal(dec2base(base_10, 10), string(base_10));
+
+assert_checkequal(dec2base(base_10, 11), base_11);
+assert_checkequal(dec2base(base_10, 12), base_12);
+assert_checkequal(dec2base(base_10, 13), base_13);
+assert_checkequal(dec2base(base_10, 14), base_14);
+assert_checkequal(dec2base(base_10, 15), base_15);
+assert_checkequal(dec2base(base_10, 16), base_16);
+assert_checkequal(dec2base(base_10, 23), base_23);
+assert_checkequal(dec2base(base_10, 28), base_28);
+assert_checkequal(dec2base(base_10, 35), base_35);