summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddBranch.sci173
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafAtan.sci131
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafConvol.sci373
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafDet.sci85
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafDotOp.sci325
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafElementary.sci84
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafFFT.sci254
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafIFFT.sci88
-rw-r--r--src/Scilab2C/FunctionTableManagement/AddLeafSqrt.sci84
-rw-r--r--src/Scilab2C/FunctionTableManagement/Example.sce152
-rw-r--r--src/Scilab2C/FunctionTableManagement/Readme.txt11
-rw-r--r--src/Scilab2C/FunctionTableManagement/SearchFunctionName.sci17
-rw-r--r--src/Scilab2C/FunctionTableManagement/main.sci253
13 files changed, 2030 insertions, 0 deletions
diff --git a/src/Scilab2C/FunctionTableManagement/AddBranch.sci b/src/Scilab2C/FunctionTableManagement/AddBranch.sci
new file mode 100644
index 00000000..e5f2da7b
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddBranch.sci
@@ -0,0 +1,173 @@
+function TreeBase = AddBranch(TreeBase, Branch, CINFO )
+
+// To understand how this software works the steps are:
+//
+// 1. check if "fn" is stored in the USER2CLib;
+// a. if "fn" there is, we have to check if "fn.S" there is
+// i. if "fn.S" there is, we have to check if "fn.S.R" there is
+// ii. if "fn.S" there isn't, we can store the Branch
+// ...
+// and in the same way for the other case.
+//
+// b. if "fn" there isn't, we can store all the Branch
+
+ getf("SearchFunctionName.sci");
+
+//
+// I have to search the point where to insert the (sub) branch
+//
+
+//
+// suppose I have to insert the function structure fn.S.R.D.CINFO
+// the first operation is to cut the function structure in sub-structure
+//
+ ind = strindex( Branch, '.' );
+//
+// SubBranch is an array which element, for the example are:
+// SubBranch(1) = fn.
+// SubBranch(2) = S.
+// SubBranch(3) = R.
+// SubBranch(4) = D.
+// SubBranch(5) = CINFO
+//
+// PAY ATTENTION!!! you have S. and not S
+//
+ SubBranch = strsplit( Branch, ind );
+
+//
+// I have to know the number of the element (I can have fn.S.R.D.S.R.D.CINFO)
+//
+ [NumSub, Temp] = size( SubBranch );
+
+ clear Temp;
+
+//
+// I extract the first element of the SubStranch array. I know this element is the
+// name of the function (in the example is fn)
+//
+ TempStructure = part(SubBranch(1), [1 : length(SubBranch(1))-1]);
+
+//
+// I search the function
+//
+ [TempProt, FlagFind] = SearchFunctionName( TempStructure, TreeBase(1)(1) );
+
+ index1 = 2;
+
+ if FlagFind then
+//
+// if I found the function name I have to explorer the structure until I find the sub branch to add to the TREE
+//
+ GoOut = %F;
+
+ while ( (GoOut == %F) & (index1 <= (NumSub-1) ) );
+//
+// index1 point to the position in the sub structure that I have to check if is present in the TREE
+// (if I have fn.S.C.... in my tree, I have to point to fn.S because I'll add a new branch for the R leaf)
+// I use Temp because I have to remember the previous position
+//
+ Temp = TempStructure + "." + part(SubBranch(index1), [1 : length(SubBranch(index1))-1]);
+ [TempProt, FlagFind] = SearchFunctionName( Temp, TreeBase(1)(1) );
+
+ if FlagFind then
+//
+// so, If Temp is present in the tree I upload the new position
+//
+ index1 = index1 + 1;
+ TempStructure = Temp;
+ else
+//
+// else, I have found the position where to add the sub branch
+ GoOut = %T;
+ end
+
+ end
+
+ else
+//
+// If I don't found the function name I have to add it in the TREE
+//
+ TreeBase(1)(1,$+1) = TempStructure;
+ TreeBase($+1) = "ERROR";
+
+ end
+
+//
+// index1 is the position of the first sub branch that I have add in the TREE
+//
+ for index = index1 : NumSub-1,
+//
+// I extract the Leaf in the index position
+//
+ TempLeaf = part( SubBranch(index), [1 : length( SubBranch(index) ) - 1] );
+//
+// I have to verify if I point to a tree or to a leaf
+//
+ dimension = eval("size(TreeBase." + TempStructure + ")");
+
+ if dimension(1) == 1 then
+//
+// If I point to a leaf, I construct a temporany tree before to append the leaf
+//
+
+ TempTreeBase = tlist( ["TempTreeBase", TempLeaf], "ERROR" );
+ TempCommand = "TreeBase." + TempStructure + " = TempTreeBase";
+ execstr( TempCommand );
+
+ else
+//
+// else (is the case that I have in my structure fn.S.R.D.S.R.D.CINFO and I want to memorize fn.S.R.D.CINFO)
+// I add another branch
+//
+
+ TempCommand = "TreeBase." + TempStructure + "(1)(1,$+1) = TempLeaf";
+ execstr( TempCommand );
+ TempCommand = "TreeBase." + TempStructure + "($+1) = ''ERROR''";
+ execstr( TempCommand );
+
+ end
+
+ TempStructure = TempStructure + "." + TempLeaf;
+
+ end
+
+ TempLeaf = part( SubBranch(NumSub), 1 : length( SubBranch(NumSub) ) );
+
+ if eval("TreeBase." + TempStructure + "(1)") == "ERROR" then
+//
+// When I close the loop for I have to append the leaf CINFO,
+// but it is necessary to verify if we are at the end of the tree
+//
+
+ TempTree = tlist( ["TempTree", "CINFO"], CINFO );
+ command = "TreeBase." + TempStructure + " = TempTree";
+ execstr( command );
+
+ else
+// se non trovo ERROR non � detto che possa trovare CINFO, quindi devo perfezzionare la ricera
+// if it isn't the end of the tree it is necessary to verify if I have CINFO
+//
+ Temp = TempStructure + ".CINFO";
+ [TempProt, FlagFind] = SearchFunctionName( Temp, TreeBase(1)(1) );
+
+ if FlagFind
+//
+// if there is CINFO, I add this information
+//
+ TempCommand = "TreeBase." + TempStructure + ".CINFO($+1) = CINFO";
+ execstr( TempCommand );
+
+ else
+//
+// else I append to the last CINFO the new one
+//
+ TempCommand = "TreeBase." + TempStructure + "(1)(1,$+1) = ''CINFO''";
+ execstr( TempCommand );
+ TempCommand = "TreeBase." + TempStructure + "($+1) = CINFO";
+ execstr( TempCommand );
+
+ end
+ end
+
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafAtan.sci b/src/Scilab2C/FunctionTableManagement/AddLeafAtan.sci
new file mode 100644
index 00000000..f8df9e33
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafAtan.sci
@@ -0,0 +1,131 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafAtan(FunctionName)
+//
+// this part is for one input
+//
+
+ NumFunc = 0;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRF" + FunctionName + "MRF(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRD" + FunctionName + "MRD(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+ //
+// this part is for two inputs
+//
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSRF" + FunctionName + "SRF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDSRD" + FunctionName + "SRD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFMRF" + FunctionName + "MRF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDMRD" + FunctionName + "MRD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafConvol.sci b/src/Scilab2C/FunctionTableManagement/AddLeafConvol.sci
new file mode 100644
index 00000000..2cd6302f
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafConvol.sci
@@ -0,0 +1,373 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafConvol(FunctionName)
+
+//
+//this function can have one or two outputs
+//
+ NumFunc = 0;
+
+//
+// 1 Output
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSRF" + FunctionName + "SRF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+//
+// 2 Outputs
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.R.F.CINFO(2)";
+ CINFO(NumFunc).CPROT = "SRFSRF" + FunctionName + "SRF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = ["S", "S"];
+ CINFO(NumFunc).TYPE = ["R", "R"];
+ CINFO(NumFunc).PREC = ["F", "F"];
+ CINFO(NumFunc).DIM = ["O1Sz = 1", "02Sz = 0"];
+ CINFO(NumFunc).NOut = 2;
+
+//
+// 1 Output
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSCF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+//
+// 2 Output
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSCF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = ["S", "S"];
+ CINFO(NumFunc).TYPE = ["C", "C"];
+ CINFO(NumFunc).PREC = ["F", "F"];
+ CINFO(NumFunc).DIM = ["O1Sz = I1Sz", "O2Sz = 0"];
+ CINFO(NumFunc).NOut = 2;
+
+//
+// 1 Output
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFMRF" + FunctionName + "MRF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+//
+// 2 Output
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFMRF" + FunctionName + "MRF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = ["M", "M"];
+ CINFO(NumFunc).TYPE = ["R", "R"];
+ CINFO(NumFunc).PREC = ["F", "F"];
+ CINFO(NumFunc).DIM = ["O1Sz = I2Sz", "O2Sz = "];
+ CINFO(NumFunc).NOut = 2;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFMCF" + FunctionName + "MCF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDSRD" + FunctionName + "SRD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDSCD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDMRD" + FunctionName + "MRD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDMCD" + FunctionName + "MCD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFSRF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFSCF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFMRF" + FunctionName + "MCF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFMCF" + FunctionName + "MCF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDSRD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDSCD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDMRD" + FunctionName + "MCD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDMCD" + FunctionName + "MCD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFSRF" + FunctionName + "MRF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFSCF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFMRF" + FunctionName + "MRF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFMCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDSRD" + FunctionName + "MRD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDSCD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDMRD" + FunctionName + "MRD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDMCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFSRF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFSCF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFMRF" + FunctionName + "MCF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFMCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDSRD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDSCD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDMRD" + FunctionName + "MCD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDMCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafDet.sci b/src/Scilab2C/FunctionTableManagement/AddLeafDet.sci
new file mode 100644
index 00000000..efbeb3d9
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafDet.sci
@@ -0,0 +1,85 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafDet(FunctionName)
+
+ NumFunc = 0;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRF" + FunctionName + "SRF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRD" + FunctionName + "SRD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCF" + FunctionName + "SCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCD" + FunctionName + "SCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafDotOp.sci b/src/Scilab2C/FunctionTableManagement/AddLeafDotOp.sci
new file mode 100644
index 00000000..c32ba615
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafDotOp.sci
@@ -0,0 +1,325 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafDotOp(FunctionName)
+
+ NumFunc = 0;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSRF" + FunctionName + "SRF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSCF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFMRF" + FunctionName + "MRF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFMCF" + FunctionName + "MCF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDSRD" + FunctionName + "SRD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDSCD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDMRD" + FunctionName + "MRD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDMCD" + FunctionName + "MCD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFSRF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFSCF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFMRF" + FunctionName + "MCF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFMCF" + FunctionName + "MCF(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDSRD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDSCD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDMRD" + FunctionName + "MCD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDMCD" + FunctionName + "MCD(x, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I2Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFSRF" + FunctionName + "MRF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFSCF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFMRF" + FunctionName + "MRF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFMCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDSRD" + FunctionName + "MRD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDSCD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDMRD" + FunctionName + "MRD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDMCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFSRF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFSCF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFMRF" + FunctionName + "MCF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFMCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDSRD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDSCD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDMRD" + FunctionName + "MCD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDMCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = [I1Sz(1), I2Sz(2)]";
+ CINFO(NumFunc).NOut = 1;
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafElementary.sci b/src/Scilab2C/FunctionTableManagement/AddLeafElementary.sci
new file mode 100644
index 00000000..6e6a898c
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafElementary.sci
@@ -0,0 +1,84 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafElementary(FunctionName)
+
+ NumFunc = 0;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRF" + FunctionName + "MRF(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRD" + FunctionName + "MRD(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafFFT.sci b/src/Scilab2C/FunctionTableManagement/AddLeafFFT.sci
new file mode 100644
index 00000000..1928f7c7
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafFFT.sci
@@ -0,0 +1,254 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafFFT(FunctionName)
+
+ NumFunc = 0;
+
+//
+// 1 inputs
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRF" + FunctionName + "MCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRD" + FunctionName + "MCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCF" + FunctionName + "MCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCD" + FunctionName + "MCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+//
+// 2 inputs
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SRFSRF" + FunctionName + "SRF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SRDSRD" + FunctionName + "SRD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "SCFSRF" + FunctionName + "SCF(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "SCDSRD" + FunctionName + "SCD(x, y, z, Nelements)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRFSRF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRDSRD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCFSRF" + FunctionName + "MCF(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCDSRD" + FunctionName + "MCD(*X, strideX, y, *Z, strideZ, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+//
+//4 inputs
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.S.R.F.S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRFSRFSRFSRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.S.R.D.S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRDSRDSRDSRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.S.R.F.S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCFSRFSRFSRF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.S.R.D.S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCDSRDSRDSRD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.S.R.F.S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRFSRFSRFSRF" + FunctionName + "MCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.S.R.D.S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRDSRDSRDSRD" + FunctionName + "MCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.S.R.F.S.R.F.S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCFSRFSRFSRF" + FunctionName + "MCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.S.R.D.S.R.D.S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCDSRDSRDSRD" + FunctionName + "MCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafIFFT.sci b/src/Scilab2C/FunctionTableManagement/AddLeafIFFT.sci
new file mode 100644
index 00000000..a3326b17
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafIFFT.sci
@@ -0,0 +1,88 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafIFFT(FunctionName)
+
+ NumFunc = 0;
+
+//
+// 1 inputs
+//
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz=1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = 1";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRF" + FunctionName + "MCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MRD" + FunctionName + "MCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCF" + FunctionName + "MCF(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=MCD" + FunctionName + "MCD(*X, strideX, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/AddLeafSqrt.sci b/src/Scilab2C/FunctionTableManagement/AddLeafSqrt.sci
new file mode 100644
index 00000000..c3047866
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/AddLeafSqrt.sci
@@ -0,0 +1,84 @@
+function [FuncStruct, CINFO, NumFunc] = AddLeafSqrt(FunctionName)
+
+ NumFunc = 0;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRF" + FunctionName + "SRF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SRD" + FunctionName + "SRD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCF" + FunctionName + "SCF(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".S.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "y=SCD" + FunctionName + "SCD(x)";
+ CINFO(NumFunc).SIZE = "S";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.F.CINFO";
+ CINFO(NumFunc).CPROT = "MRF" + FunctionName + "MRF(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.R.D.CINFO";
+ CINFO(NumFunc).CPROT = "MRD" + FunctionName + "MRD(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "R";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.F.CINFO";
+ CINFO(NumFunc).CPROT = "MCF" + FunctionName + "MCF(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "F";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+
+ NumFunc = NumFunc + 1;
+
+ FuncStruct(NumFunc) = FunctionName + ".M.C.D.CINFO";
+ CINFO(NumFunc).CPROT = "MCD" + FunctionName + "MCD(*X, strideX, *Y, strideY, Nelements)";
+ CINFO(NumFunc).SIZE = "M";
+ CINFO(NumFunc).TYPE = "C";
+ CINFO(NumFunc).PREC = "D";
+ CINFO(NumFunc).DIM = "O1Sz = I1Sz";
+ CINFO(NumFunc).NOut = 1;
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/Example.sce b/src/Scilab2C/FunctionTableManagement/Example.sce
new file mode 100644
index 00000000..dde9e9c2
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/Example.sce
@@ -0,0 +1,152 @@
+// in the following you can find some examples that help you to use the biuild in functions.
+
+// the first operation is to find the path where the files are stored
+// cd <path>
+
+ clear;
+ clc;
+
+ getf("main.sci");
+ [SCI2CLib, USER2CLib] = main();
+
+//
+// I add the same function with two inputs
+//
+// Branch=FunctionStructure;
+// TreeBase=USER2CLib;
+//
+ getf("SearchFunctionName.sci");
+ getf("AddBranch.sci");
+
+ FunctionStructure = "fn.S.R.D.S.R.D.CINFO";
+
+ clear CINFO;
+
+ CINFO.CPROT = "y=SRDSRDfnSRD";
+ CINFO.SIZE = "S";
+ CINFO.TYPE = "R";
+ CINFO.PREC = "D";
+
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "SCI2CLib");
+
+ if FlagFind==%F then
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "USER2CLib");
+
+ if FlagFind==%F then
+ USER2CLib = AddBranch( USER2CLib, FunctionStructure, CINFO );
+ end
+
+ end
+
+ eval("USER2CLib." + FunctionStructure)
+
+//
+// now I change one output type
+//
+// Branch=FunctionStructure;
+// TREE="USER2CLib";
+//
+ getf("SearchFunctionName.sci");
+ getf("AddBranch.sci");
+
+ FunctionStructure = "fn.S.R.D.CINFO";
+
+ clear CINFO;
+
+ CINFO.CPROT = "y=SRDfnSRD";
+ CINFO.SIZE = "S";
+ CINFO.TYPE = "R";
+ CINFO.PREC = "D";
+
+
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "SCI2CLib");
+
+ if FlagFind==%F then
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "USER2CLib");
+
+ if FlagFind==%F then
+ USER2CLib = AddBranch( USER2CLib, FunctionStructure, CINFO );
+ end
+
+ end
+
+ eval("USER2CLib." + FunctionStructure)
+
+//
+// I add the same function with two outputs:
+// 1. the first output is S.R.D
+// 2. the second output is M.R.D.
+//
+// Branch=FunctionStructure;
+// TREE="USER2CLib";
+//
+ FunctionStructure = "fn.S.R.D.CINFO(2)";
+
+ clear CINFO;
+
+ S(1) = "S";
+ R(1) = "R";
+ D(1) = "D";
+
+ S(2) = "M";
+ R(2) = "R";
+ D(2) = "D";
+
+ CINFO.CPROT = "y=SRDfnSRDSRD";
+ CINFO.SIZE = S;
+ CINFO.TYPE = R;
+ CINFO.PREC = D;
+
+
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "SCI2CLib");
+
+ if FlagFind==%F then
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "USER2CLib");
+
+ if FlagFind==%F then
+ USER2CLib = AddBranch( USER2CLib, FunctionStructure, CINFO );
+ end
+
+ end
+
+ eval("USER2CLib." + FunctionStructure)
+
+//
+// fn.S.R.F.CINFO
+//
+// where
+//
+// CINFO.
+// CPRO = "y=SRFfnSRF(x)"
+// SIZE = "S"
+// TYPE = "R"
+// PREC = "F"
+
+// Branch=FunctionStructure;
+// TREE="USER2CLib";
+
+ getf("SearchFunctionName.sci");
+ getf("AddBranch.sci");
+
+ FunctionStructure = "fn.S.R.F.CINFO";
+
+ CINFO(1).CPROT = "y=SRFfnSRF";
+ CINFO(1).SIZE = "S";
+ CINFO(1).TYPE = "R";
+ CINFO(1).PREC = "F";
+
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "SCI2CLib");
+
+ if FlagFind==%F then
+ [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, "USER2CLib");
+
+ if FlagFind==%F then
+
+ USER2CLib = AddBranch(USER2CLib, FunctionStructure, CINFO );
+
+ end
+
+ end
+
+ eval("USER2CLib." + FunctionStructure)
+
diff --git a/src/Scilab2C/FunctionTableManagement/Readme.txt b/src/Scilab2C/FunctionTableManagement/Readme.txt
new file mode 100644
index 00000000..882398e3
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/Readme.txt
@@ -0,0 +1,11 @@
+commento un po':
+1. AddBranch.sci � la nuova procedura che "attacca" le funzioni all'albero SCI2CLib o USER2CLib;
+2. AddLeafAtan.sci contiene tutte le combinazioni su cui poter utilizzare la funzione atan;
+3. AddLeafDet.sci contiene tutte le combinazioni su cui poter utilizzare la funzione det;
+4. AddLeafDotOp.sci contiene tutte le combinazioni su cui poter utilizzare le funioni "punto" e tra due operandi
+5. AddLeafElementary.sci contiene tutte le combinazioni su cui poter utilizzare le funzioni "elementari" (sin cos...)
+6. AddLeaf Sqrt contiene tutte le combinazioni su cui poter utilizzare la funzione sqrt;
+7. main.sci crea le due liste SCI2CLib e USER2CLib e popola la prima con le varie funzioni.
+8. SearchFunctionName.sci interroga l'albero (parametro di ingresso) per trovare una funzione
+9. Example.sce � uno script che lancia il file main e simula la ricerca di una funzione utente e il relativo inserimento
+ \ No newline at end of file
diff --git a/src/Scilab2C/FunctionTableManagement/SearchFunctionName.sci b/src/Scilab2C/FunctionTableManagement/SearchFunctionName.sci
new file mode 100644
index 00000000..2c987fb5
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/SearchFunctionName.sci
@@ -0,0 +1,17 @@
+function [Cprototype, FlagFind] = SearchFunctionName(FunctionStructure, Tree)
+
+ Temp = Tree + "." + FunctionStructure;
+
+ if execstr(Temp,'error') == 0 then
+
+ Cprototype = eval(Temp);
+ FlagFind = %T;
+
+ else
+
+ FlagFind = %F;
+ Cprototype = "ERROR";
+
+ end
+
+endfunction
diff --git a/src/Scilab2C/FunctionTableManagement/main.sci b/src/Scilab2C/FunctionTableManagement/main.sci
new file mode 100644
index 00000000..b28c1111
--- /dev/null
+++ b/src/Scilab2C/FunctionTableManagement/main.sci
@@ -0,0 +1,253 @@
+function [SCI2CLib, USER2CLib] = main()
+//
+// Dim is the expression that returns the size of the output(s)
+// Example:
+// if I want to calculate the size of the output sin than
+// x is Scalar
+// I1Sz = 1;
+//
+// Dim = "O1Sz = I1Sz"
+// eval(Dim);
+//
+// NOut is the number of the output(s).
+// Example: if I have 1 output then NOut = 1
+// if I have 2 outputs then NOut = 2
+//
+ clear;
+ clc;
+
+ getf("AddBranch.sci");
+
+ SCI2CLib = tlist(["SCI2CLib"]);
+
+ USER2CLib = tlist(["USER2CLib"]);
+
+// I create the library for the elementary function
+
+ getf("AddLeafElementary.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("sin");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("cos");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("tan");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("cotg");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("asin");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("acos");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("sinh");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("cosh");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("tanh");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("asinh");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("acosh");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("atanh");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("exp");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("log");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("log10");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("abs");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("inv");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafElementary("sqrtR");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// determinant function
+
+ getf("AddLeafDet.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDet("det");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// sqrt function
+
+ getf("AddLeafSqrt.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafSqrt("sqrt");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// I add the function with 2 Input
+
+// dot function
+
+ getf("AddLeafDotOp.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("DotAdd");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("DotSub");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("DotMul");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("DotDiv");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// op function
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("OpAdd");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("OpSub");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("OpMul");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafDotOp("OpDiv");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// atan function
+
+ getf("AddLeafAtan.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafAtan("atan");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// convol function
+
+ getf("AddLeafConvol.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafConvol("convol");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// fft function
+
+ getf("AddLeafFFT.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafFFT("fft");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+// ifft function
+
+ getf("AddLeafIFFT.sci");
+
+ [FuncStruct, CINFO, NumFunc] = AddLeafIFFT("ifft");
+
+ for ind = 1 : NumFunc,
+ SCI2CLib = AddBranch(SCI2CLib, FuncStruct(ind), CINFO(ind) );
+ end
+
+endfunction